# HG changeset patch # User Chris Cannam # Date 1484065292 0 # Node ID f73a4e8c7040866a25c03d4aebad1dd9aa694155 # Parent a0a37ed3c07af9df181516fafd76bde004ab0e3c# Parent f016667b4adb9e0c3889b0e3e290e6eb9b8b9402 Merge from branch 3.0-integration diff -r a0a37ed3c07a -r f73a4e8c7040 .hgsub --- a/.hgsub Tue Jan 10 16:10:33 2017 +0000 +++ b/.hgsub Tue Jan 10 16:21:32 2017 +0000 @@ -1,5 +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 a0a37ed3c07a -r f73a4e8c7040 .hgsubstate --- a/.hgsubstate Tue Jan 10 16:10:33 2017 +0000 +++ b/.hgsubstate Tue Jan 10 16:21:32 2017 +0000 @@ -1,5 +1,13 @@ -2777e3578cf15fd0e579dc6ca9cdfe0d93d400f2 dataquay -55ece8862b6d3a54aad271a53f9c1615e5d3bcf8 sv-dependency-builds -d65ce7e553469e65be564a2168f42d45ba1135a3 svapp -59ae7e04f7e982f08be31c3d635dcee358c50861 svcore -e8102ff5573b5d89c54da4a92b9c7fbd1a27962b svgui +4542e34b7d8cc86a4b12651d692dcdb63f45e9e5 bqaudioio +fec5b1dfb6cd59c632f4aa412e3458f49e36367d bqfft +482d0362594bce1e5347295a188c5a81cf2ab0fd bqresample +ede817a08bd1e9835348a6477530bd3253fb379c bqvec +e791c14261313d50166bee9baf57d243dd5d4c12 checker +3768bdde6fdf866aa63fff5bde8d9fa64a8979ef dataquay +3d2cde3b1ab3d39c7f9e542250c288a9da0f6850 icons/scalable +3257ddb6fff110cc88f3ffeaeefa0f29d5eb3b6f piper-cpp +95867ba8caa86f69fdd57366dbfe2f977dd9cb5d sv-dependency-builds +1a8a8980f39a8e735c90837a4c2260248aafe7f1 svapp +1bf38a4b91c4cfd7a77de73fa77a6723f80fe211 svcore +be42a33a3db6c11559166b65c30bcd7248a46c9f svgui +ea8e56f0796afebe78e9e678f4b674c1d7fb279e vamp-plugin-sdk diff -r a0a37ed3c07a -r f73a4e8c7040 CHANGELOG --- a/CHANGELOG Tue Jan 10 16:10:33 2017 +0000 +++ b/CHANGELOG Tue Jan 10 16:21:32 2017 +0000 @@ -1,4 +1,64 @@ -Changes in Sonic Visualiser 2.5 since the previous release 2.4.1: + +Changes in Sonic Visualiser 3.0 (Jan 2017) since the previous release 2.5: + + - Add ability to record audio, and ability to change the audio device + for playback or recording in the preferences + + - Add complete support for high-resolution (Hi-DPI or retina) + displays, including for layer data rendering as well as UI controls + and icons. This makes the biggest difference when using a retina + Mac, on which previous versions did not render layer data at retina + resolution, but it also improves scaling and rendering of UI + elements on Hi-DPI displays on Windows and Linux + + - Add ability to open, display, and analyse very long audio files (of + more than 2^32 sample frames) + + - Add ability to export scalable (SVG) image files + + - Run plugins in a separate process, so that if a plugin crashes, it + no longer brings down Sonic Visualiser with it. In every other + respect the behaviour should be unchanged + + - Scan plugins on startup in a separate process, and report on any + that crash or won't load + + - Change mp3 file loading so as to compensate for encoder/decoder + delay and padding (using "gapless playback" logic). While this is a + real improvement, unfortunately it does mean that the initial + padding in mp3 file load has changed from previous versions, which + may mean some sessions saved in previous versions are no longer + correctly aligned. It's not a great idea to use mp3 as a file + format of record, because of differences like this between + decoders. The previous behaviour is still available as a preference. + + - Add new Hybrid normalisation type for spectrogram and colour 3d + plot layers. This normalises each column to its peak value and then + scales the normalised values by the log of the peak in order to + restore some distinction in scale between columns with different + levels. It can provide quite visually clear results. + + - Add function to subdivide time instant layers into regular + intervals (and its inverse) + + - Add new preference for default colour scales + + - Switch to using combined level/pan controls in layer property boxes + and for the main volume control + + - Make CSV file reader better able to handle files with varying + numbers of columns + + - Fix a number of problems on Windows with loading and saving some + file formats to filenames not representable in system codepage + + - Add "What's New" dialog + + - Finally switch the Windows built to 64-bit by default (with + adapters to run either 32- or 64-bit plugins) + + +Changes in Sonic Visualiser 2.5 (Oct 2015) since the previous release 2.4.1: - Add unit-converter dialog, for converting between various pitch and timing units @@ -13,11 +73,13 @@ - Fix failure to export last instant in a time-instant layer -Changes in Sonic Visualiser 2.4.1 since the previous release 2.4: + +Changes in Sonic Visualiser 2.4.1 (Oct 2014) since the previous release 2.4: - Fix a crash when rendering certain colour 3d plot layers -Changes in Sonic Visualiser 2.4 since the previous release 2.3: + +Changes in Sonic Visualiser 2.4 (Sep 2014) since the previous release 2.3: - Add support for left/right scrolling using a two-finger touchpad gesture (where available) @@ -71,7 +133,7 @@ platforms. -Changes in Sonic Visualiser 2.3 since the previous release 2.2: +Changes in Sonic Visualiser 2.3 (Dec 2013) since the previous release 2.2: - Add a startup welcome dialog that also explains what SV makes network connections for and allows user to forbid them @@ -97,7 +159,7 @@ build -Changes in Sonic Visualiser 2.2 since the previous release 2.1: +Changes in Sonic Visualiser 2.2 (July 2013) since the previous release 2.1: - Build with support for hidpi ("retina") text on OS/X @@ -114,7 +176,7 @@ a new session is started -Changes in Sonic Visualiser 2.1 since the previous release 2.0.1: +Changes in Sonic Visualiser 2.1 (May 2013) since the previous release 2.0.1: - Fix incorrect handling of FixedSampleRate outputs (Vamp SDK fix) @@ -132,7 +194,7 @@ - Fix incorrect samplerate in reading m4a files on OS/X -Changes in Sonic Visualiser 2.0 since the previous release 1.9: +Changes in Sonic Visualiser 2.0 (July 2012) since the previous release 1.9: - Support 64-bit builds on OS/X (using CoreAudio instead of obsolete QuickTime audio file reader) @@ -144,7 +206,7 @@ - Add a fullscreen mode on the F11 key -Changes in Sonic Visualiser 1.9 since the previous release 1.8: +Changes in Sonic Visualiser 1.9 (Oct 2011) since the previous release 1.8: - Add session templates; save session as template; apply template to session @@ -155,7 +217,7 @@ - Various bug fixes. -Changes in Sonic Visualiser 1.8 since the previous release 1.7.2: +Changes in Sonic Visualiser 1.8 (Apr 2011) since the previous release 1.7.2: - Sonic Visualiser now registers as a file type handler on OS/X, providing better integration with the desktop generally (Dan Stowell) @@ -185,7 +247,7 @@ - A Czech translation is now included (thanks to Pavel Fric). -Changes in Sonic Visualiser 1.7.2 since the previous release 1.7.1: +Changes in Sonic Visualiser 1.7.2 (May 2010) since the previous release 1.7.1: - The time-value layer now has an origin line and an option to show derivatives (change from one point to the next) rather than @@ -198,7 +260,7 @@ fixed -Changes in Sonic Visualiser 1.7.1 since the previous release 1.7: +Changes in Sonic Visualiser 1.7.1 (Oct 2009) since the previous release 1.7: - The RDF importer does a better job of assigning labels to layers, layers to panes, and values to labelled regions @@ -215,7 +277,7 @@ - The Russian translation has been updated (thanks Alexandre) -Changes in Sonic Visualiser 1.7 since the previous release 1.6: +Changes in Sonic Visualiser 1.7 (Sep 2009) since the previous release 1.6: - A new "Insert Item At Selection" function on the Edit menu can be used to create Note and Region layer items whose time @@ -230,7 +292,7 @@ - Time values throughout the display may optionally be shown in seconds and frames at various frame rates - + - A crash on exit in Windows has been fixed - A very unobtrusive user survey is now included @@ -238,7 +300,7 @@ - Various other bug fixes. -Changes in Sonic Visualiser 1.6 since the previous release 1.5: +Changes in Sonic Visualiser 1.6 (Jun 2009) since the previous release 1.5: - The Colour 3D Plot layer now supports logarithmic vertical scale and linear interpolation options. @@ -252,7 +314,7 @@ - Various other bug fixes. -Changes in Sonic Visualiser 1.5 since the previous version 1.4: +Changes in Sonic Visualiser 1.5 (Mar 2009) since the previous release 1.4: - You can now insert time instants, time values, and notes using a MIDI device during playback. If a time value or note layer is @@ -293,7 +355,7 @@ been fixed. -New features in Sonic Visualiser 1.4 since the previous version 1.3: +Changes in Sonic Visualiser 1.4 (Dec 2008) since the previous release 1.3: - SV now has a Region layer type, used for display of features with durations. It also supports Vamp v2.0 plugins that provide durations @@ -323,7 +385,7 @@ - Several crashes and other bugs have been fixed. -Changes in Sonic Visualiser 1.3 since the previous version 1.2: +Changes in Sonic Visualiser 1.3 (Jul 2008) since the previous release 1.2: - There is a new spreadsheet-style data viewer and editor for viewing and editing the data in some types of annotation layer. @@ -342,7 +404,7 @@ - Several other bug fixes. -New features in Sonic Visualiser 1.2, since the previous version 1.0: +Changes in Sonic Visualiser 1.2 (Feb 2008) since the previous release 1.0: - SV now supports time-alignment of multiple performances of a work loaded at the same time. This option is enabled when the MATCH Vamp diff -r a0a37ed3c07a -r f73a4e8c7040 README --- a/README Tue Jan 10 16:10:33 2017 +0000 +++ b/README Tue Jan 10 16:21:32 2017 +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-2017 Queen Mary, University of London, except where indicated in the individual source files. diff -r a0a37ed3c07a -r f73a4e8c7040 base.pri --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/base.pri Tue Jan 10 16:21:32 2017 +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 a0a37ed3c07a -r f73a4e8c7040 bq-files.pri --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/bq-files.pri Tue Jan 10 16:21:32 2017 +0000 @@ -0,0 +1,40 @@ + +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/ResamplerWrapper.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/ResamplerWrapper.cpp \ + bqaudioio/src/SystemPlaybackTarget.cpp \ + bqaudioio/src/SystemRecordSource.cpp + diff -r a0a37ed3c07a -r f73a4e8c7040 config.pri.in --- a/config.pri.in Tue Jan 10 16:10:33 2017 +0000 +++ b/config.pri.in Tue Jan 10 16:21:32 2017 +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 HAVE_POSIX_MEMALIGN + diff -r a0a37ed3c07a -r f73a4e8c7040 configure --- a/configure Tue Jan 10 16:10:33 2017 +0000 +++ b/configure Tue Jan 10 16:21:32 2017 +0000 @@ -620,10 +620,8 @@ # include #endif" -enable_option_checking=no ac_subst_vars='LTLIBOBJS LIBOBJS -subdirs QMAKE_CONFIG HAVES CXXFLAGS_MINIMAL @@ -648,22 +646,22 @@ libpulse_CFLAGS JACK_LIBS JACK_CFLAGS -portaudio_2_0_LIBS -portaudio_2_0_CFLAGS +portaudio_LIBS +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 -samplerate_LIBS -samplerate_CFLAGS +libsamplerate_LIBS +libsamplerate_CFLAGS sndfile_LIBS sndfile_CFLAGS fftw3f_LIBS @@ -760,22 +758,22 @@ fftw3f_LIBS sndfile_CFLAGS sndfile_LIBS -samplerate_CFLAGS -samplerate_LIBS -vamp_CFLAGS -vamp_LIBS -vamphostsdk_CFLAGS -vamphostsdk_LIBS +libsamplerate_CFLAGS +libsamplerate_LIBS rubberband_CFLAGS rubberband_LIBS sord_CFLAGS sord_LIBS serd_CFLAGS serd_LIBS +capnp_CFLAGS +capnp_LIBS +kj_CFLAGS +kj_LIBS liblo_CFLAGS liblo_LIBS -portaudio_2_0_CFLAGS -portaudio_2_0_LIBS +portaudio_CFLAGS +portaudio_LIBS JACK_CFLAGS JACK_LIBS libpulse_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= @@ -1429,16 +1427,10 @@ C compiler flags for sndfile, overriding pkg-config sndfile_LIBS linker flags for sndfile, overriding pkg-config - samplerate_CFLAGS - C compiler flags for samplerate, overriding pkg-config - samplerate_LIBS - linker flags for samplerate, overriding pkg-config - vamp_CFLAGS C compiler flags for vamp, overriding pkg-config - vamp_LIBS linker flags for vamp, overriding pkg-config - vamphostsdk_CFLAGS - C compiler flags for vamphostsdk, overriding pkg-config - vamphostsdk_LIBS - linker flags for vamphostsdk, overriding pkg-config + libsamplerate_CFLAGS + C compiler flags for libsamplerate, overriding pkg-config + libsamplerate_LIBS + linker flags for libsamplerate, overriding pkg-config rubberband_CFLAGS C compiler flags for rubberband, overriding pkg-config rubberband_LIBS @@ -1447,13 +1439,18 @@ 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 - portaudio_2_0_CFLAGS - C compiler flags for portaudio_2_0, overriding pkg-config - portaudio_2_0_LIBS - linker flags for portaudio_2_0, overriding pkg-config + portaudio_CFLAGS + C compiler flags for portaudio, overriding pkg-config + portaudio_LIBS + linker flags for portaudio, overriding pkg-config JACK_CFLAGS C compiler flags for JACK, overriding pkg-config JACK_LIBS linker flags for JACK, overriding pkg-config libpulse_CFLAGS @@ -4420,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 -DNO_TIMING -DNO_HIT_COUNTS" SV_DEFINES_MINIMAL="$SV_DEFINES_RELEASE" # Now we have: USER_CXXFLAGS contains any flags the user set @@ -4435,7 +4432,7 @@ if test "x$GCC" = "xyes"; then 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_RELEASE="$CXXFLAGS_ANY -g0 -O3 -ffast-math" CXXFLAGS_MINIMAL="$CXXFLAGS_ANY -g0 -O0" fi @@ -5087,18 +5084,18 @@ fi -SV_MODULE_MODULE=samplerate +SV_MODULE_MODULE=libsamplerate SV_MODULE_VERSION_TEST="samplerate >= 0.1.2" SV_MODULE_HEADER=samplerate.h SV_MODULE_LIB=samplerate SV_MODULE_FUNC=src_new -SV_MODULE_HAVE=HAVE_$(echo samplerate | tr 'a-z' 'A-Z') +SV_MODULE_HAVE=HAVE_$(echo libsamplerate | tr 'a-z' 'A-Z') SV_MODULE_FAILED=1 -if test -n "$samplerate_LIBS" ; then +if test -n "$libsamplerate_LIBS" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&5 $as_echo "$as_me: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&6;} - CXXFLAGS="$CXXFLAGS $samplerate_CFLAGS" - LIBS="$LIBS $samplerate_LIBS" + CXXFLAGS="$CXXFLAGS $libsamplerate_CFLAGS" + LIBS="$LIBS $libsamplerate_LIBS" SV_MODULE_FAILED="" fi if test -z "$SV_MODULE_VERSION_TEST" ; then @@ -5107,11 +5104,11 @@ if test -n "$SV_MODULE_FAILED" && test -n "$PKG_CONFIG"; then pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for samplerate" >&5 -$as_echo_n "checking for samplerate... " >&6; } - -if test -n "$samplerate_CFLAGS"; then - pkg_cv_samplerate_CFLAGS="$samplerate_CFLAGS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for libsamplerate" >&5 +$as_echo_n "checking for libsamplerate... " >&6; } + +if test -n "$libsamplerate_CFLAGS"; then + pkg_cv_libsamplerate_CFLAGS="$libsamplerate_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -5119,7 +5116,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_samplerate_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_libsamplerate_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -5127,8 +5124,8 @@ else pkg_failed=untried fi -if test -n "$samplerate_LIBS"; then - pkg_cv_samplerate_LIBS="$samplerate_LIBS" +if test -n "$libsamplerate_LIBS"; then + pkg_cv_libsamplerate_LIBS="$libsamplerate_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -5136,7 +5133,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_samplerate_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_libsamplerate_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -5157,12 +5154,12 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - samplerate_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + libsamplerate_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` else - samplerate_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + libsamplerate_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` fi # Put the nasty error message in config.log where it belongs - echo "$samplerate_PKG_ERRORS" >&5 + echo "$libsamplerate_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find required module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 $as_echo "$as_me: Failed to find required module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} @@ -5172,11 +5169,11 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find required module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 $as_echo "$as_me: Failed to find required module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} else - samplerate_CFLAGS=$pkg_cv_samplerate_CFLAGS - samplerate_LIBS=$pkg_cv_samplerate_LIBS + libsamplerate_CFLAGS=$pkg_cv_libsamplerate_CFLAGS + libsamplerate_LIBS=$pkg_cv_libsamplerate_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $samplerate_CFLAGS";LIBS="$LIBS $samplerate_LIBS";SV_MODULE_FAILED="" + HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $libsamplerate_CFLAGS";LIBS="$LIBS $libsamplerate_LIBS";SV_MODULE_FAILED="" fi fi if test -n "$SV_MODULE_FAILED"; then @@ -5238,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 @@ -5258,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 @@ -5270,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 @@ -5278,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 @@ -5287,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 @@ -5308,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;} @@ -5323,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 @@ -5389,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 @@ -5409,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 @@ -5421,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 @@ -5429,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 @@ -5438,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 @@ -5459,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;} @@ -5474,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 @@ -5540,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 @@ -5560,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 @@ -5572,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 @@ -5580,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 @@ -5589,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 @@ -5610,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;} @@ -5625,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 @@ -5691,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 @@ -5711,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 @@ -5723,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 @@ -5731,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 @@ -5740,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 @@ -5761,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;} @@ -5776,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 @@ -5842,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 @@ -5862,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 @@ -5874,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 @@ -5882,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 @@ -5891,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 @@ -5912,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;} @@ -5927,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 @@ -6149,18 +6146,18 @@ fi -SV_MODULE_MODULE=portaudio_2_0 +SV_MODULE_MODULE=portaudio SV_MODULE_VERSION_TEST="portaudio-2.0 >= 19" SV_MODULE_HEADER=portaudio.h SV_MODULE_LIB=portaudio SV_MODULE_FUNC=Pa_IsFormatSupported -SV_MODULE_HAVE=HAVE_$(echo portaudio_2_0 | tr 'a-z' 'A-Z') +SV_MODULE_HAVE=HAVE_$(echo portaudio | tr 'a-z' 'A-Z') SV_MODULE_FAILED=1 -if test -n "$portaudio_2_0_LIBS" ; then +if test -n "$portaudio_LIBS" ; then { $as_echo "$as_me:${as_lineno-$LINENO}: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&5 $as_echo "$as_me: User set ${SV_MODULE_MODULE}_LIBS explicitly, skipping test for $SV_MODULE_MODULE" >&6;} - CXXFLAGS="$CXXFLAGS $portaudio_2_0_CFLAGS" - LIBS="$LIBS $portaudio_2_0_LIBS" + CXXFLAGS="$CXXFLAGS $portaudio_CFLAGS" + LIBS="$LIBS $portaudio_LIBS" SV_MODULE_FAILED="" fi if test -z "$SV_MODULE_VERSION_TEST" ; then @@ -6169,11 +6166,11 @@ if test -n "$SV_MODULE_FAILED" && test -n "$PKG_CONFIG"; then pkg_failed=no -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for portaudio_2_0" >&5 -$as_echo_n "checking for portaudio_2_0... " >&6; } - -if test -n "$portaudio_2_0_CFLAGS"; then - pkg_cv_portaudio_2_0_CFLAGS="$portaudio_2_0_CFLAGS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for portaudio" >&5 +$as_echo_n "checking for portaudio... " >&6; } + +if test -n "$portaudio_CFLAGS"; then + pkg_cv_portaudio_CFLAGS="$portaudio_CFLAGS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -6181,7 +6178,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_portaudio_2_0_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_portaudio_CFLAGS=`$PKG_CONFIG --cflags "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -6189,8 +6186,8 @@ else pkg_failed=untried fi -if test -n "$portaudio_2_0_LIBS"; then - pkg_cv_portaudio_2_0_LIBS="$portaudio_2_0_LIBS" +if test -n "$portaudio_LIBS"; then + pkg_cv_portaudio_LIBS="$portaudio_LIBS" elif test -n "$PKG_CONFIG"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"\$SV_MODULE_VERSION_TEST\""; } >&5 @@ -6198,7 +6195,7 @@ ac_status=$? $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 test $ac_status = 0; }; then - pkg_cv_portaudio_2_0_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` + pkg_cv_portaudio_LIBS=`$PKG_CONFIG --libs "$SV_MODULE_VERSION_TEST" 2>/dev/null` test "x$?" != "x0" && pkg_failed=yes else pkg_failed=yes @@ -6219,12 +6216,12 @@ _pkg_short_errors_supported=no fi if test $_pkg_short_errors_supported = yes; then - portaudio_2_0_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + portaudio_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` else - portaudio_2_0_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` + portaudio_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$SV_MODULE_VERSION_TEST" 2>&1` fi # Put the nasty error message in config.log where it belongs - echo "$portaudio_2_0_PKG_ERRORS" >&5 + echo "$portaudio_PKG_ERRORS" >&5 { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 $as_echo "$as_me: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} @@ -6234,11 +6231,11 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&5 $as_echo "$as_me: Failed to find optional module $SV_MODULE_MODULE using pkg-config, trying again by old-fashioned means" >&6;} else - portaudio_2_0_CFLAGS=$pkg_cv_portaudio_2_0_CFLAGS - portaudio_2_0_LIBS=$pkg_cv_portaudio_2_0_LIBS + portaudio_CFLAGS=$pkg_cv_portaudio_CFLAGS + portaudio_LIBS=$pkg_cv_portaudio_LIBS { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } - HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $portaudio_2_0_CFLAGS";LIBS="$LIBS $portaudio_2_0_LIBS";SV_MODULE_FAILED="" + HAVES="$HAVES $SV_MODULE_HAVE";CXXFLAGS="$CXXFLAGS $portaudio_CFLAGS";LIBS="$LIBS $portaudio_LIBS";SV_MODULE_FAILED="" fi fi if test -n "$SV_MODULE_FAILED"; then @@ -7564,10 +7561,6 @@ - - -subdirs="$subdirs svcore svgui svapp" - ac_config_files="$ac_config_files config.pri" @@ -8734,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 a0a37ed3c07a -r f73a4e8c7040 configure.ac --- a/configure.ac Tue Jan 10 16:10:33 2017 +0000 +++ b/configure.ac Tue Jan 10 16:21:32 2017 +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 -DNO_TIMING -DNO_HIT_COUNTS" SV_DEFINES_MINIMAL="$SV_DEFINES_RELEASE" # Now we have: USER_CXXFLAGS contains any flags the user set @@ -55,7 +55,7 @@ if test "x$GCC" = "xyes"; then 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_RELEASE="$CXXFLAGS_ANY -g0 -O3 -ffast-math" CXXFLAGS_MINIMAL="$CXXFLAGS_ANY -g0 -O0" fi @@ -82,15 +82,15 @@ SV_MODULE_REQUIRED([fftw3],[fftw3 >= 3.0.0],[fftw3.h],[fftw3],[fftw_execute]) SV_MODULE_REQUIRED([fftw3f],[fftw3f >= 3.0.0],[fftw3.h],[fftw3f],[fftwf_execute]) SV_MODULE_REQUIRED([sndfile],[sndfile >= 1.0.16],[sndfile.h],[sndfile],[sf_open]) -SV_MODULE_REQUIRED([samplerate],[samplerate >= 0.1.2],[samplerate.h],[samplerate],[src_new]) -SV_MODULE_REQUIRED([vamp],[vamp >= 2.1],[vamp/vamp.h],[],[]) -SV_MODULE_REQUIRED([vamphostsdk],[vamp-hostsdk >= 2.5],[vamp-hostsdk/PluginLoader.h],[vamp-hostsdk],[libvamphostsdk_v_2_5_present]) +SV_MODULE_REQUIRED([libsamplerate],[samplerate >= 0.1.2],[samplerate.h],[samplerate],[src_new]) SV_MODULE_REQUIRED([rubberband],[rubberband],[rubberband/RubberBandStretcher.h],[rubberband],[rubberband_new]) SV_MODULE_REQUIRED([sord],[sord-0 >= 0.5],[sord/sord.h],[sord-0],[sord_world_new]) SV_MODULE_REQUIRED([serd],[serd-0 >= 0.5],[serd/serd.h],[serd-0],[serd_reader_read_file]) +SV_MODULE_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_2_0],[portaudio-2.0 >= 19],[portaudio.h],[portaudio],[Pa_IsFormatSupported]) +SV_MODULE_OPTIONAL([portaudio],[portaudio-2.0 >= 19],[portaudio.h],[portaudio],[Pa_IsFormatSupported]) SV_MODULE_OPTIONAL([JACK],[jack >= 0.100],[jack/jack.h],[jack],[jack_client_open]) SV_MODULE_OPTIONAL([libpulse],[libpulse >= 0.9],[pulse/pulseaudio.h],[pulse],[pa_stream_new]) SV_MODULE_OPTIONAL([lrdf],[lrdf >= 0.2],[lrdf.h],[lrdf],[lrdf_init]) @@ -120,7 +120,6 @@ AC_SUBST(QMAKE_CONFIG) -AC_CONFIG_SUBDIRS([svcore svgui svapp]) AC_CONFIG_FILES([config.pri]) AC_OUTPUT diff -r a0a37ed3c07a -r f73a4e8c7040 convert.pro --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/convert.pro Tue Jan 10 16:21:32 2017 +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 a0a37ed3c07a -r f73a4e8c7040 deploy/osx/copy-qt.sh --- a/deploy/osx/copy-qt.sh Tue Jan 10 16:10:33 2017 +0000 +++ b/deploy/osx/copy-qt.sh Tue Jan 10 16:21:32 2017 +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 QtDBus" +frameworks="QtCore QtNetwork QtGui QtXml QtSvg QtWidgets QtPrintSupport QtDBus" -plugins="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/.*,,) @@ -27,6 +29,12 @@ echo echo "Copying frameworks..." for fwk in $frameworks; do + if [ ! -d "$qtdir/lib/$fwk.framework" ]; then + if [ "$fwk" = "QtDBus" ]; then + echo "QtDBus.framework not found, assuming Qt was built without DBus support" + continue + fi + fi cp -v "$qtdir/lib/$fwk.framework/$fwk" "$fdir" || exit 2 done diff -r a0a37ed3c07a -r f73a4e8c7040 deploy/osx/deploy.sh --- a/deploy/osx/deploy.sh Tue Jan 10 16:10:33 2017 +0000 +++ b/deploy/osx/deploy.sh Tue Jan 10 16:21:32 2017 +0000 @@ -21,10 +21,11 @@ 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 @@ -44,6 +45,14 @@ cp deploy/osx/qt.conf "$source"/Contents/Resources/qt.conf echo +echo "Copying in plugin load checker." +cp checker/vamp-plugin-load-checker "$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)" @@ -67,8 +76,13 @@ echo "Done" +echo +echo "Code-signing volume..." + deploy/osx/sign.sh "$volume" || exit 1 +echo "Done" + echo echo "Making dmg..." diff -r a0a37ed3c07a -r f73a4e8c7040 deploy/osx/paths.sh --- a/deploy/osx/paths.sh Tue Jan 10 16:10:33 2017 +0000 +++ b/deploy/osx/paths.sh Tue Jan 10 16:21:32 2017 +0000 @@ -11,7 +11,7 @@ set -u -frameworks="QtCore QtNetwork QtGui QtXml QtWidgets QtPrintSupport QtDBus" +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" @@ -30,24 +30,29 @@ done for fwk in $frameworks; do - find "$app.app" -type f -print | while read x; do - 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" - 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 - 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 + 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 diff -r a0a37ed3c07a -r f73a4e8c7040 deploy/osx/sign.sh --- a/deploy/osx/sign.sh Tue Jan 10 16:10:33 2017 +0000 +++ b/deploy/osx/sign.sh Tue Jan 10 16:21:32 2017 +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 @@ -11,12 +13,16 @@ exit 2 fi for app in "$dir"/*.app; do - find "$app" -name Qt\* -print | while read fr; do - codesign -s "Developer ID Application: Chris Cannam" -fv "$fr" - done - find "$app" -name \*.dylib -print | while read fr; do - codesign -s "Developer ID Application: Chris Cannam" -fv "$fr" - done + codesign -s "Developer ID Application: Chris Cannam" -fv --deep "$app" +# find "$app" -name Qt\* -print | while read fr; do +# codesign -s "Developer ID Application: Chris Cannam" -fv "$fr" +# done +# 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 a0a37ed3c07a -r f73a4e8c7040 deploy/src/archive.sh --- a/deploy/src/archive.sh Tue Jan 10 16:10:33 2017 +0000 +++ b/deploy/src/archive.sh Tue Jan 10 16:21:32 2017 +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 a0a37ed3c07a -r f73a4e8c7040 deploy/win32/README-Vamp.txt --- a/deploy/win32/README-Vamp.txt Tue Jan 10 16:10:33 2017 +0000 +++ b/deploy/win32/README-Vamp.txt Tue Jan 10 16:21:32 2017 +0000 @@ -1,5 +1,5 @@ To add Vamp audio analysis plugins to the Transform menu in -Sonic Visualiser, unpack them into this directory. +Sonic Visualiser, unpack and copy them into this directory. See http://vamp-plugins.org/ for more information. diff -r a0a37ed3c07a -r f73a4e8c7040 deploy/win32/build.cmd --- a/deploy/win32/build.cmd Tue Jan 10 16:10:33 2017 +0000 +++ b/deploy/win32/build.cmd Tue Jan 10 16:21:32 2017 +0000 @@ -5,7 +5,7 @@ ) DEL sonic-visualiser.msi %WIXPATH%\candle.exe -v sonic-visualiser.wxs -%WIXPATH%\light.exe -b ..\.. -ext WixUIExtension -v sonic-visualiser.wixobj +%WIXPATH%\light.exe -b ..\..\..\build-sonic-visualiser-Desktop_Qt_5_7_0_MinGW_32bit-Release -ext WixUIExtension -v sonic-visualiser.wixobj PAUSE DEL sonic-visualiser.wixobj DEL sonic-visualiser.wixpdb diff -r a0a37ed3c07a -r f73a4e8c7040 deploy/win32/sonic-visualiser.wxs --- a/deploy/win32/sonic-visualiser.wxs Tue Jan 10 16:10:33 2017 +0000 +++ b/deploy/win32/sonic-visualiser.wxs Tue Jan 10 16:21:32 2017 +0000 @@ -5,15 +5,15 @@ Id="*" Language="1033" Codepage="1252" - Version="2.5.0" + Version="3.0.0" UpgradeCode="D476941E-65F3-4962-9E72-B40FAAE5DBD0" Manufacturer="Queen Mary, University of London"> + - - - + + + - - + + - + - + - - + + - - - + + + - - - - + + + - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - + + + + + + - - - - - - - - - - - - - + + + + + + + @@ -209,18 +215,20 @@ + Id="Complete" + Title="Required files" + Description="Installs the required files for running Sonic Visualiser." + AllowAdvertise="no" + Absent="disallow" + ConfigurableDirectory="APPLICATIONFOLDER" + Level="1"> + + @@ -235,9 +243,9 @@ - + - + diff -r a0a37ed3c07a -r f73a4e8c7040 deploy/win64/License.rtf Binary file deploy/win64/License.rtf has changed diff -r a0a37ed3c07a -r f73a4e8c7040 deploy/win64/README-Vamp.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/deploy/win64/README-Vamp.txt Tue Jan 10 16:21:32 2017 +0000 @@ -0,0 +1,5 @@ + +To add Vamp audio analysis plugins to the Transform menu in +Sonic Visualiser, unpack and copy them into this directory. + +See http://vamp-plugins.org/ for more information. diff -r a0a37ed3c07a -r f73a4e8c7040 deploy/win64/README-Vamp32.txt --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/deploy/win64/README-Vamp32.txt Tue Jan 10 16:21:32 2017 +0000 @@ -0,0 +1,5 @@ + +To add 32-bit Vamp audio analysis plugins to the Transform menu in +Sonic Visualiser, unpack and copy them into this directory. + +See http://vamp-plugins.org/ for more information. diff -r a0a37ed3c07a -r f73a4e8c7040 deploy/win64/build.cmd --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/deploy/win64/build.cmd Tue Jan 10 16:21:32 2017 +0000 @@ -0,0 +1,11 @@ +@ECHO OFF +SET WIXPATH="C:\Program Files (x86)\WiX Toolset v3.9\bin" +IF NOT EXIST %WIXPATH% ( + SET WIXPATH="C:\Program Files\WiX Toolset v3.9\bin" +) +DEL sonic-visualiser.msi +%WIXPATH%\candle.exe -v sonic-visualiser.wxs +%WIXPATH%\light.exe -b ..\..\..\build-sonic-visualiser-Desktop_Qt_5_7_0_MSVC2015_64bit-Release -ext WixUIExtension -v sonic-visualiser.wixobj +PAUSE +DEL sonic-visualiser.wixobj +DEL sonic-visualiser.wixpdb diff -r a0a37ed3c07a -r f73a4e8c7040 deploy/win64/sonic-visualiser.wxs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/deploy/win64/sonic-visualiser.wxs Tue Jan 10 16:21:32 2017 +0000 @@ -0,0 +1,295 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -r a0a37ed3c07a -r f73a4e8c7040 i18n/sonic-visualiser_cs_CZ.qm Binary file i18n/sonic-visualiser_cs_CZ.qm has changed diff -r a0a37ed3c07a -r f73a4e8c7040 i18n/sonic-visualiser_cs_CZ.ts --- a/i18n/sonic-visualiser_cs_CZ.ts Tue Jan 10 16:10:33 2017 +0000 +++ b/i18n/sonic-visualiser_cs_CZ.ts Tue Jan 10 16:21:32 2017 +0000 @@ -1,6 +1,6 @@ - + ActivityLog @@ -38,6 +38,13 @@ + AlignmentView + + AlignmentView + + + + AudioCallbackPlaySource Stop at %1 @@ -82,28 +89,32 @@ New value for %1, from %2 to %3 %4: Nová hodnota pro %1, od %2 do %3 %4: + + %1: %2 + %1: %2 + 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 +264,14 @@ <ignore> <nevšímat si> + + Pitch + Výška tónu + + + Explicitly, in milliseconds + + Colour3DPlotLayer @@ -286,11 +305,11 @@ Normalize Columns - Normalizovat sloupce + Normalizovat sloupce Normalize Visible Area - Normalizovat viditelnou oblast + Normalizovat viditelnou oblast Colour @@ -328,60 +347,103 @@ Invert Vertical Scale Obrátit svislou stupnici + + Normalization + + + + None + + + + Col + + + + View + + + + Hybrid + + + + + ColourComboBox + + Name New Colour + Pojmenovat novou barvu + + + Enter a name for the new colour: + Zadejte název pro novou barvu: + + + Prefer black background for this colour + Upřednostňovat černé pozadí pro tuto barvu + + + Add New Colour... + Přidat novou barvu... + ColourMapper Black on White - Černá na bílé + Černá na bílé Yellow on Black - Žlutá na černé + Žlutá na černé Banded - Pruhovaný + Pruhovaný <unknown> - <neznámý> + <neznámý> Sunset - Západ slunce + Západ slunce Fruit Salad - Ovocný salát + Ovocný salát Red on Blue - Červená na modré + Červená na modré Printer - Tiskárna + Tiskárna Blue on Black - Modrá na černé + Modrá na černé Default - Výchozí + Výchozí High Gain - Zesílení výšek + Zesílení výšek Highlight - Zvýraznění + Zvýraznění White on Black - Bílá na černé + Bílá na černé + + + Green + Zelená @@ -443,6 +505,13 @@ + DecodingWavFileReader + + Decoding %1... + Dekóduje se %1... + + + Dense3DModelPeakCache Dense 3-D Peak Cache @@ -557,6 +626,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 +639,7 @@ Login failed - Přihlášení se nezdařilo + Přihlášení se nezdařilo Download cancelled @@ -582,7 +655,7 @@ FTP download aborted - FTP stahování zrušeno + FTP stahování zrušeno Downloading %1... @@ -590,11 +663,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 +1050,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 +1085,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 +1164,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 +1199,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 +1212,90 @@ 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 (*.*) + + + + Scalable Vector Graphics files (*.svg) +All files (*.*) + + ItemEditDialog @@ -1029,7 +1364,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 + @@ -1109,6 +1448,14 @@ Cyclical counter Cyklické počítadlo + + Subdivide Points + + + + Winnow Points + + Layer @@ -1118,7 +1465,7 @@ Layer - Vrstva + Vrstva Notes @@ -1172,6 +1519,14 @@ Delete Measurement Smazat měření + + Flexible Notes + + + + Unknown Layer + + LayerTreeDialog @@ -1208,6 +1563,20 @@ + LevelPanToolButton + + Click to adjust level and pan + + + + + LevelPanWidget + + Drag vertically to adjust level, horizontally to adjust pan + + + + MIDIFileImportDialog <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: @@ -1783,7 +2152,7 @@ <br>With Rubber Band &copy; Chris Cannam - <br>Gumička (Rubber Band) &copy; Chris Cannam + <br>Gumička (Rubber Band) &copy; Chris Cannam Erase items from layer @@ -1819,7 +2188,7 @@ <b>Alignment calculation failed</b><p>Failed to calculate an audio alignment using transform "%1":<p>%2 - <b>Spočítání zarovnání se nezdařilo</b><p>Zarovnání zvuku se spočítat s pomocí "%1" nepodařilo:<p>%2 + <b>Spočítání zarovnání se nezdařilo</b><p>Zarovnání zvuku se spočítat s pomocí "%1" nepodařilo:<p>%2 Show Acti&vity Log @@ -1907,7 +2276,7 @@ Playback speed: %1%2% - Rychlost přehrávání: %1%2% + Rychlost přehrávání: %1%2% Restore &Default Zoom @@ -2079,7 +2448,7 @@ Adjust the master playback level - Přizpůsobit hlavní úroveň přehrávání + Přizpůsobit hlavní úroveň přehrávání <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> @@ -2115,7 +2484,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,11 +2540,11 @@ <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 - <br>Gumička (Rubber Band) v%1 &copy; Chris Cannam + <br>Gumička (Rubber Band) v%1 &copy; Chris Cannam Show centre indicator, frame times and scale @@ -2199,7 +2568,7 @@ Playback Speedup - Zvýšení rychlosti přehrávání + Zvýšení rychlosti přehrávání Zoom &Out @@ -2343,7 +2712,7 @@ With Qt v%1 &copy; Nokia Corporation - S Qt v%1 &copy; Nokia Corporation + S Qt v%1 &copy; Nokia Corporation Add a new layer showing a time ruler @@ -2615,7 +2984,7 @@ Ctrl+Shift+Enter - Ctrl+Shift+Enter + Ctrl+Shift+Enter Audio processing overload @@ -2703,7 +3072,7 @@ Export Annotation Layer... - Vyvést poznámkovou vrstvu... + Vyvést poznámkovou vrstvu... &Export Audio File... @@ -2755,7 +3124,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 @@ -3035,7 +3404,7 @@ <p><small>%1 : %2 configuration</small></p> - <p><small>%1 : %2 nastavení</small></p> + <p><small>%1 : %2 nastavení</small></p> <b>Template file exists</b><p>The template "%1" already exists.<br>Overwrite it? @@ -3103,7 +3472,7 @@ <br>With Vamp plugin support (API v%1, host SDK v%2) &copy; Chris Cannam - <br>Podpora pro přídavné moduly Vamp (API v%1, host SDK v%2) &copy; Chris Cannam + <br>Podpora pro přídavné moduly Vamp (API v%1, host SDK v%2) &copy; Chris Cannam Unclassified @@ -3151,7 +3520,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 +3632,7 @@ %1: %1 - %1: %1 + %1: %1 <br>With Serd and Sord RDF parser and store &copy; David Robillard @@ -3271,11 +3640,7 @@ <br>With Dataquay Qt/RDF library &copy; Chris Cannam - <br>Knihovna Dataquay Qt/RDF &copy; Chris Cannam - - - &Export Audio Data... - &Vyvést zvuková data... + <br>Knihovna Dataquay Qt/RDF &copy; Chris Cannam Export audio from selection into a data file @@ -3289,6 +3654,318 @@ Export the whole file Vyvést celý soubor + + Playback Speed + + + + Export Audio Data... + &Vyvést zvuková data... + + + Export Annotation La&yer... + + + + Ctrl+Y + + + + 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 ?} + + + Export SVG File... + + + + Export a single pane to a scalable SVG image file + + + + Subdivide Selected Instants... + + + + Add new instants at regular intervals between the selected instants + + + + Winnow Selected Instants... + + + + Remove subdivisions, leaving only every Nth instant + + + + Export the whole pane + + + + Export the visible area only + + + + Which region of the current pane do you want to export as a scalable SVG image? + + + + Failed to save SVG file + + + + Failed to save SVG file %1 + + + + Subdivide instants + + + + Number of subdivisions: + + + + Winnow instants + + + + Remove all instants apart from multiples of: + + + + <b>Alignment calculation failed</b><p>Failed to calculate an audio alignment:<p>%1 + + + + Adjust the master playback level and pan + + + + <p><small>%1 : %2 configuration, %3-bit build</small></p> + + + + With Qt v%1 &copy; The Qt Company + + + + <br>With Rubber Band Library v%1 &copy; Particular Programs Ltd + + + + <br>With Rubber Band Library &copy; Particular Programs Ltd + + + + <br>With Vamp plugin support (API v%1, host SDK v%2) &copy; Chris Cannam and QMUL + + + + <br>With Dataquay Qt/RDF library &copy; Particular Programs Ltd + + + + <br>With Cap'n Proto serialisation &copy; Sandstorm Development Group + + MainWindowBase @@ -3446,6 +4123,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 +4226,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 +4440,15 @@ Draw - Nakreslit + Nakreslit Edit - Upravit + Upravit Left - Levé + Levé Menu @@ -3756,7 +4456,7 @@ Move - Posunout + Posunout Zoom @@ -3764,7 +4464,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 +4472,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 +4492,7 @@ Multi Select - Vícenásobný výběr + Vícenásobný výběr Zoom In @@ -3804,7 +4504,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 +4532,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 +4552,11 @@ Select - Vybrat + Vybrat Fine Select - Citlivý výběr + Citlivý výběr Zoom in or out in time axis @@ -3864,7 +4564,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 +4592,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 +4612,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 +4644,7 @@ Ctrl+Left - Ctrl+šipka vlevo + Ctrl+šipka vlevo Click and drag to move the selection boundary @@ -3952,11 +4652,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 +4680,7 @@ Double-Click Left - Dvakrát klepněte levým + Dvakrát klepněte levým Wheel Down @@ -3988,7 +4688,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 +4700,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 +4712,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 +4732,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 +4760,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 +4772,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 +4799,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 +4807,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 +5075,7 @@ Time display format - Formát zobrazení času + Formát zobrazení času Show boxes for all panes @@ -4397,6 +5101,46 @@ 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 + + + + Load mp3 files in gapless mode + + PreferencesDialog @@ -4440,7 +5184,7 @@ Default session template for audio files: - Výchozí předloha sezení pro zvukové soubory: + Výchozí předloha sezení pro zvukové soubory: Anal&ysis @@ -4468,11 +5212,11 @@ &General - &Obecné + &Obecné Playback audio device: - Zvukové zařízení pro přehrávání: + Zvukové zařízení pro přehrávání: Follow system locale @@ -4498,6 +5242,74 @@ User interface language Jazyk uživatelského rozhraní + + Allow network usage + + + + Draw layers at Retina resolution: + + + + Default spectrogram colour: + + + + Default melodic spectrogram colour: + + + + Default colour 3D plot colour: + + + + Green + Zelená + + + (auto) + (auto) + + + Overview waveform colour: + + + + Run Vamp plugins in separate process: + + + + Default session template when loading audio files: + + + + (Use "%1" in the File menu to add to these.) + + + + Export Session as Template... + Vyvést předlohu jako sezení... + + + Audio service: + + + + Audio playback device: + + + + Audio record device: + + + + A&udio I/O + + + + &Other + + ProgressDialog @@ -4510,11 +5322,11 @@ PropertyBox dB - dB + dB Play - Přehrát + Přehrát Show @@ -4538,11 +5350,11 @@ Playback Pan / Balance - Vyvážení přehrávání/rovnováha + Vyvážení přehrávání/rovnováha Prefer black background for this colour - Upřednostňovat černé pozadí pro tuto barvu + Upřednostňovat černé pozadí pro tuto barvu Toggle Visibility of %1 @@ -4554,19 +5366,35 @@ Add New Colour... - Přidat novou barvu... + Přidat novou barvu... Name New Colour - Pojmenovat novou barvu + Pojmenovat novou barvu Enter a name for the new colour: - Zadejte název pro novou barvu: + Zadejte název pro novou barvu: Playback Gain - Zesílení přehrávání + Zesílení přehrávání + + + Set playback clip: + + + + Click to toggle playback + + + + Adjust playback level and pan of %1 + + + + Change sound used for playback (currently "%1") + @@ -4675,10 +5503,97 @@ + QObject + + External plugin host executable does not appear to be installed + + + + Could not start external plugin host + + + + External plugin host exited unexpectedly while listing plugins + + + + External plugin host invocation failed: %1 + + + + <b>Failed to scan for plugins</b><p>Failed to scan for plugins at startup. Possibly the plugin checker helper program was not correctly installed alongside %1?</p> + + + + <b>Did not scan for plugins</b><p>Apparently no scan for plugins was attempted (internal error?)</p> + + + + <b>Failed to load plugins</b><p>Failed to load one or more plugin libraries:</p> + + + + <p>These plugins may be incompatible with the system, and will be ignored during this run of %1.</p> + + + + <unknown> + <neznámý> + + + Green + Zelená + + + White on Black + Bílá na černé + + + Black on White + Černá na bílé + + + Cherry + + + + Wasp + + + + Ice + + + + Sunset + Západ slunce + + + Fruit Salad + Ovocný salát + + + Banded + Pruhovaný + + + Highlight + Zvýraznění + + + Printer + Tiskárna + + + High Gain + Zesílení výšek + + + QuickTimeFileReader Decoding %1... - Dekóduje se %1... + Dekóduje se %1... @@ -4711,6 +5626,13 @@ + ReadOnlyWaveFileModel + + Wave File + Soubor Wave + + + RegionLayer Log @@ -4883,7 +5805,7 @@ ResamplingWavFileReader Resampling %1... - Převzorkovává se %1... + Převzorkovává se %1... @@ -5156,7 +6078,7 @@ -Inf - -Inf + -Inf 25 % @@ -5248,7 +6170,7 @@ Normalize Columns - Normalizovat sloupce + Normalizovat sloupce Time: %1 - %2 @@ -5304,7 +6226,7 @@ Normalize Visible Area - Normalizovat viditelnou oblast + Normalizovat viditelnou oblast Colour @@ -5350,7 +6272,7 @@ Smoothing - Vyhlazování + Vyhlazování dB: %1 @@ -5436,6 +6358,22 @@ Max Frequency Největší kmitočet + + Normalization + + + + Col + + + + View + + + + Hybrid + + SpectrumLayer @@ -5445,7 +6383,7 @@ -Inf - -Inf + -Inf 25 % @@ -5547,11 +6485,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 +6776,7 @@ Time: %1 Value: %2%3 Label: %4 - Čas: %1 + Čas: %1 Hodnota: %2%3 Štítek: %4 @@ -5908,7 +6846,7 @@ Time: %1 Value: %2%3 No label - Čas: %1 + Čas: %1 Hodnota: %2%3 Žádný štítek @@ -5952,6 +6890,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 @@ -6074,6 +7048,10 @@ Effects Data Efektová data + + Failed to list Vamp plugins: %1 + + TransformFinder @@ -6179,6 +7157,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 @@ -6228,6 +7262,10 @@ Alignment Zarovnání + + Exported image from %1 + + ViewManager @@ -6315,12 +7353,16 @@ Zvětšení na %n vzorků na pixel + + Enter NoteEdit mode + + WaveFileModel Wave File - Soubor Wave + Soubor Wave @@ -6335,7 +7377,7 @@ -Inf - -Inf + -Inf Gain diff -r a0a37ed3c07a -r f73a4e8c7040 i18n/sonic-visualiser_en_GB.qm Binary file i18n/sonic-visualiser_en_GB.qm has changed diff -r a0a37ed3c07a -r f73a4e8c7040 i18n/sonic-visualiser_en_GB.ts --- a/i18n/sonic-visualiser_en_GB.ts Tue Jan 10 16:10:33 2017 +0000 +++ b/i18n/sonic-visualiser_en_GB.ts Tue Jan 10 16:21:32 2017 +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,25 +38,33 @@ AlignmentModel - + Alignment + AlignmentView + + + AlignmentView + + + + AudioCallbackPlaySource - + Play from %1 - + Stop at %1 - + Change time-stretch factor to %1 @@ -64,140 +72,117 @@ AudioDial - + + %1: %2 + + + + %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 +190,7 @@ BundleCommand - + %1 (%n change(s)) %1 (%n change) @@ -216,7 +201,8 @@ CSVFileWriter - + + Failed to open file %1 for writing @@ -224,88 +210,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 +309,114 @@ Colour3DPlotLayer - - + + Colour - - + + Scale - Normalize Columns - Normalise Columns - - - + Normalise Columns + + Normalize Visible Area - Normalise Visible Area - - - + Normalise Visible Area + + + + Normalization + + + + Invert Vertical Scale - + Gain - + Always Opaque - + Smooth - + Bin Scale - + Bins - - + + Linear - - + + Log - + +/-1 - + Absolute - + + None + + + + + Col + + + + + View + + + + + Hybrid + + + + <unknown> - + dB - + Time: %1 - %2 Bin: %3 Value: %4 @@ -405,139 +424,92 @@ - ColourMapper - - - - <unknown> - - - - - Default - - - - - White on Black - - - - - Black on White - - - - - Red on Blue - - - - - Yellow on Black - - - - - Blue on Black - - - - - Sunset - - - - - Fruit Salad - - - - - Banded - - - - - Highlight - - - - - Printer - - - - - High Gain + ColourComboBox + + + Name New Colour + + + + + Enter a name for the new colour: + + + + + Prefer black background for this colour + + + + + Add New Colour... 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 +517,15 @@ CoreAudioFileReader - + + Decoding %1... + + + + + DecodingWavFileReader + + Decoding %1... @@ -553,7 +533,7 @@ Dense3DModelPeakCache - + Dense 3-D Peak Cache @@ -561,17 +541,17 @@ DenseThreeDimensionalModel - + Dense 3-D - + Time - + Frame @@ -579,7 +559,7 @@ DenseTimeValueModel - + Dense Time-Value @@ -587,12 +567,12 @@ Document - + Set main model to %1 - + Clear main model @@ -600,7 +580,7 @@ EditableDenseThreeDimensionalModel - + Editable Dense 3-D @@ -608,12 +588,12 @@ FFTModel - + FFT - + %1 Hz @@ -621,22 +601,22 @@ Fader - + Enter new fader level - + New fader level, from %1 to %2 dBFS: - + Level: Off - + Level: %1%2.%3%4 dB @@ -644,48 +624,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 +678,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 +934,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 +987,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 +1046,38 @@ ImageModel - - + + Image - + Edit Image - + Time - + Frame - + Label - + Unknown - + Edit Data @@ -902,38 +1085,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 +1121,7 @@ - + All supported files (%1 %2) Sonic Visualiser Layer XML files (*.svl) Comma-separated data files (*.csv) @@ -956,24 +1132,121 @@ - + + 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) + + + Scalable Vector Graphics files (*.svg) All files (*.*) - + + 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 +1254,31 @@ - - 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 +1288,7 @@ - + Sonic Visualiser Layer XML files (*.svl) Comma-separated data files (*.csv) RDF/Turtle files (%1) @@ -1072,71 +1297,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 +1395,65 @@ ItemEditDialog - + Timing - + Time: - - + + frames - - + + sec - - + + usec - + Duration: - + Properties - + Value: - + Text: - + OK - + Reset - + Cancel @@ -1210,41 +1461,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,157 +1503,173 @@ 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 + + + Subdivide Points + + + + + Winnow Points + + 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 +1677,17 @@ LayerTreeDialog - + Layer Summary - + Audio Data Sources - + Panes and Layers @@ -1428,50 +1695,66 @@ LayerTreeModel - + Layer - + Shown - + Played - + Model + LevelPanToolButton + + + Click to adjust level and pan + + + + + LevelPanWidget + + + Drag vertically to adjust level, horizontally to adjust pan + + + + 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 +1762,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 +1852,7 @@ MIDIInput - + Input @@ -1577,7 +1860,7 @@ MP3FileReader - + Decoding %1... @@ -1585,2387 +1868,2716 @@ MainWindow - + Black - + Red - + Blue - - - + + Green - + Purple - + Orange - + White - + Bright Red - + Bright Blue - - - + + Bright Green - + Bright Purple - + Bright Orange + + + + &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 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 + + + + + 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... + + + - &Preferences... - - - - - Adjust the application preferences - - - - - &Quit - - - - - Ctrl+Q - - - - - &Edit + Ctrl+Y + + + + + Export SVG File... + + + + + Export a single pane to a scalable SVG image file + + + + + Browse Recorded Audio Folder - 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 - - - - + Open the Recorded Audio folder in the system file browser + + + + + Ctrl+Shift+Return + + + + + Subdivide Selected Instants... + + + + + Add new instants at regular intervals between the selected instants + + + + + Winnow Selected Instants... + + + + + Remove subdivisions, leaving only every Nth instant + + + + + # + + + + + 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 + + + + + Export the whole pane + + + + + Export the visible area only + + + + + Which region of the current pane do you want to export as a scalable SVG image? + + + + + Failed to save SVG file + + + + + Failed to save SVG file %1 + + + + + Playback speed: %1% (%2x slower) + + + + + Playback speed: %1% (%2x faster) + + + + + Subdivide instants + + + + + Number of subdivisions: + + + + + Winnow instants + + + + + Remove all instants apart from multiples of: + + + + + <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. + + + + + <b>Alignment calculation failed</b><p>Failed to calculate an audio alignment:<p>%1 + + + + + Adjust the master playback level and pan + + + + + <p><small>%1 : %2 configuration, %3-bit build</small></p> + + + + + With Qt v%1 &copy; The Qt Company + + + + + <br>With Rubber Band Library v%1 &copy; Particular Programs Ltd + + + + + <br>With Rubber Band Library &copy; Particular Programs Ltd + + + + + <br>With Vamp plugin support (API v%1, host SDK v%2) &copy; Chris Cannam and QMUL + + + + + <br>With Dataquay Qt/RDF library &copy; Particular Programs Ltd + + + + + <br>With Cap'n Proto serialisation &copy; Sandstorm Development Group + + + + + <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 + + + - &Delete Selected Items - - - - - Del - - - - + Relocate + + + + + + + + Double-Click Left + + + - 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 - - - - + Double-click left button to jump to clicked location + + + + + + Double-click left button on an item to edit it + + + - - 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 - - - - + 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 + + + + + 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 + + + - - - - - Failed to open file - - - - - - - <b>File open failed</b><p>Audio file "%1" could not be opened - - - - + %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? - - %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 +4585,221 @@ 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 +4807,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 +4885,22 @@ ModelMetadataModel - + Type - + Name - + Maker - + Source @@ -4283,88 +4908,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 +5015,7 @@ - + Time: %1 Pitch: %2 Duration: %3 @@ -4380,68 +5023,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 +5092,47 @@ NoteModel - + Note - + Time - + Frame - + Pitch - + Duration - + Level - + Label - + Unknown - + Edit Data @@ -4497,7 +5140,7 @@ OggVorbisFileReader - + Decoding %1... @@ -4505,12 +5148,12 @@ Overview - + Overview - + Click and drag to navigate; double-click to jump @@ -4518,465 +5161,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 +5462,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 +5503,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 +5631,259 @@ 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 - + + Load mp3 files in gapless mode + + + + + 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 +5891,207 @@ PreferencesDialog - + Sonic Visualiser: Application Preferences - + Apply - + + Green + + + + + + + (auto) + + + + <home directory> - + Follow system locale - + Russian - + British English - + American English - + Czech - - - - - - - - - - - + + + + + + + + + + + + + + %1: - + + Overview waveform colour: + + + + + Run Vamp plugins in separate process: + + + + + Default session template when loading audio files: + + + + + (Use "%1" in the File menu to add to these.) + + + + + Export Session as Template... + + + + + Audio service: + + + + + Audio playback device: + + + + + Audio record device: + + + + + A&udio I/O + + + + User interface language - - Playback audio device: - - - - - &General - - - - + + Allow network usage + + + + + 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 - + + &Other + + + + 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 +6100,7 @@ ProgressDialog - + Cancel @@ -5515,78 +6108,57 @@ 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 - - - - + + Click to toggle playback + + + + + Set playback clip: + + + + + Adjust playback level and pan of %1 + + + + + Change sound used for playback (currently "%1") + + + + (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 +6166,37 @@ PropertyContainer - + yes - + on - + true - + no - + off - + false - + Set %1 Property @@ -5632,12 +6204,12 @@ PropertyStack - + Change Layer Visibility - + Click to change the current active layer @@ -5645,7 +6217,7 @@ QApplication - + Sonic Visualiser is a program for viewing and exploring audio data for semantic music analysis and annotation. @@ -5661,7 +6233,7 @@ - + Sonic Visualiser @@ -5696,22 +6268,20 @@ QFile - - - + + File "%1" does not exist - - - + + Failed to open file "%1" - - + + File or URL "%1" could not be retrieved @@ -5719,44 +6289,145 @@ 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 - QuickTimeFileReader - - - Decoding %1... + QObject + + + External plugin host executable does not appear to be installed + + + + + Could not start external plugin host + + + + + External plugin host exited unexpectedly while listing plugins + + + + + External plugin host invocation failed: %1 + + + + + <b>Failed to scan for plugins</b><p>Failed to scan for plugins at startup. Possibly the plugin checker helper program was not correctly installed alongside %1?</p> + + + + + <b>Did not scan for plugins</b><p>Apparently no scan for plugins was attempted (internal error?)</p> + + + + + <b>Failed to load plugins</b><p>Failed to load one or more plugin libraries:</p> + + + + + <p>These plugins may be incompatible with the system, and will be ignored during this run of %1.</p> + + + + + + <unknown> + + + + + Green + + + + + White on Black + + + + + Black on White + + + + + Cherry + + + + + Wasp + + + + + Ice + + + + + Sunset + + + + + Fruit Salad + + + + + Banded + + + + + Highlight + + + + + Printer + + + + + High Gain RDFImporter - + Importing audio referenced in RDF... - + Importing dense signal data from RDF... - + Importing event data from RDF... @@ -5764,7 +6435,7 @@ RangeInputDialog - + to @@ -5772,87 +6443,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 +6539,7 @@ - + Time: %1 Value: %2 Duration: %3 @@ -5868,63 +6547,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 +6611,42 @@ RegionModel - + Region - + Time - + Frame - + Value - + Duration - + Label - + Unknown - + Edit Data @@ -5975,29 +6654,21 @@ RemoveLayerCommand - + Delete %1 Layer - ResamplingWavFileReader - - - Resampling %1... - - - - SVFileReader - - + + (derived model in SV-XML) - + Opening file or URL... @@ -6005,12 +6676,12 @@ SingleColourLayer - + Colour - + <unknown> @@ -6018,13 +6689,13 @@ SliceLayer - - + + %1 - %2 - + Time: %1 - %2 Range: %3 samples (%4) Bin: %5 @@ -6032,139 +6703,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 +6843,22 @@ SparseModel - + Sparse - + Edit Data - + Insert Data Point - + Delete Data Point @@ -6195,7 +6866,7 @@ SparseModel::AddPointCommand - + Add Point @@ -6203,7 +6874,7 @@ SparseModel::DeletePointCommand - + Delete Point @@ -6211,7 +6882,7 @@ SparseModel::RelabelCommand - + Re-Label Point @@ -6219,32 +6890,32 @@ SparseOneDimensionalModel - + Sparse 1-D - + Time - + Frame - + Label - + Unknown - + Edit Data @@ -6252,37 +6923,37 @@ SparseTimeValueModel - + Sparse Time-Value - + Time - + Frame - + Value - + Label - + Unknown - + Edit Data @@ -6290,7 +6961,7 @@ SparseValueModel - + Sparse Value @@ -6298,363 +6969,370 @@ 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 - + + Col + + + + + View + + + + + Hybrid + + + + 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 +7340,84 @@ 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 +7425,22 @@ - + First - + Mean - + Peak - + %1 Bin: %2 (%3) Value: %4 @@ -6779,106 +7451,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 +7571,37 @@ TextModel - + Text - + Time - + Frame - + Height - + Label - + Unknown - + Edit Data @@ -6924,39 +7609,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 +7649,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 +7755,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 +7983,27 @@ TipDialog - + Tip of the Day - + Show tip on startup - + << Previous - + Next >> - + Close @@ -7306,136 +8011,141 @@ 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 - + + Failed to list Vamp plugins: %1 + + + + 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 +8153,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 +8218,7 @@ - + Found %n description(s) containing <b>%1</b> Found %n description containing <b>%1</b> @@ -7516,216 +8226,296 @@ - + <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... + + + Exported image from %1 + + 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,139 +8523,124 @@ - + 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 - - WindowShapePreview - + V / time - + dB / freq @@ -7873,7 +8648,7 @@ WritableWaveFileModel - + Writable Wave File diff -r a0a37ed3c07a -r f73a4e8c7040 i18n/sonic-visualiser_en_US.qm Binary file i18n/sonic-visualiser_en_US.qm has changed diff -r a0a37ed3c07a -r f73a4e8c7040 i18n/sonic-visualiser_en_US.ts --- a/i18n/sonic-visualiser_en_US.ts Tue Jan 10 16:10:33 2017 +0000 +++ b/i18n/sonic-visualiser_en_US.ts Tue Jan 10 16:21:32 2017 +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,25 +38,33 @@ AlignmentModel - + Alignment + AlignmentView + + + AlignmentView + + + + AudioCallbackPlaySource - + Play from %1 - + Stop at %1 - + Change time-stretch factor to %1 @@ -64,140 +72,117 @@ AudioDial - + + %1: %2 + + + + %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 +190,7 @@ BundleCommand - + %1 (%n change(s)) %1 (%n change) @@ -216,7 +201,8 @@ CSVFileWriter - + + Failed to open file %1 for writing @@ -224,88 +210,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 +309,106 @@ Colour3DPlotLayer - - + + Colour Color - - + + Scale - - Normalize Columns - - - - - Normalize Visible Area - - - - + + Normalization + + + + Invert Vertical Scale - + Gain - + Always Opaque - + Smooth - + Bin Scale - + Bins - - + + Linear - - + + Log - + +/-1 - + Absolute - + + None + + + + + Col + + + + + View + + + + + Hybrid + + + + <unknown> - + dB - + Time: %1 - %2 Bin: %3 Value: %4 @@ -405,139 +416,92 @@ - ColourMapper - - - - <unknown> - - - - - Default - - - - - White on Black - - - - - Black on White - - - - - Red on Blue - - - - - Yellow on Black - - - - - Blue on Black - - - - - Sunset - - - - - Fruit Salad - - - - - Banded - - - - - Highlight - - - - - Printer - - - - - High Gain - + ColourComboBox + + + 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 + + + + Add New Colour... + Add New Color... 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 +509,15 @@ CoreAudioFileReader - + + Decoding %1... + + + + + DecodingWavFileReader + + Decoding %1... @@ -553,7 +525,7 @@ Dense3DModelPeakCache - + Dense 3-D Peak Cache @@ -561,17 +533,17 @@ DenseThreeDimensionalModel - + Dense 3-D - + Time - + Frame @@ -579,7 +551,7 @@ DenseTimeValueModel - + Dense Time-Value @@ -587,12 +559,12 @@ Document - + Set main model to %1 - + Clear main model @@ -600,7 +572,7 @@ EditableDenseThreeDimensionalModel - + Editable Dense 3-D @@ -608,12 +580,12 @@ FFTModel - + FFT - + %1 Hz @@ -621,22 +593,22 @@ Fader - + Enter new fader level - + New fader level, from %1 to %2 dBFS: - + Level: Off - + Level: %1%2.%3%4 dB @@ -644,48 +616,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 +670,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 +926,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 +979,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 +1038,38 @@ ImageModel - - + + Image - + Edit Image - + Time - + Frame - + Label - + Unknown - + Edit Data @@ -902,38 +1077,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 +1113,7 @@ - + All supported files (%1 %2) Sonic Visualiser Layer XML files (*.svl) Comma-separated data files (*.csv) @@ -956,24 +1124,121 @@ - + + 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) + + + Scalable Vector Graphics files (*.svg) All files (*.*) - + + 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 +1246,31 @@ - - 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 +1280,7 @@ - + Sonic Visualiser Layer XML files (*.svl) Comma-separated data files (*.csv) RDF/Turtle files (%1) @@ -1072,71 +1289,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 +1387,65 @@ ItemEditDialog - + Timing - + Time: - - + + frames - - + + sec - - + + usec - + Duration: - + Properties - + Value: - + Text: - + OK - + Reset - + Cancel @@ -1210,41 +1453,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,157 +1495,173 @@ 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 + + + Subdivide Points + + + + + Winnow Points + + 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 +1669,17 @@ LayerTreeDialog - + Layer Summary - + Audio Data Sources - + Panes and Layers @@ -1428,50 +1687,66 @@ LayerTreeModel - + Layer - + Shown - + Played - + Model + LevelPanToolButton + + + Click to adjust level and pan + + + + + LevelPanWidget + + + Drag vertically to adjust level, horizontally to adjust pan + + + + 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 +1754,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 +1844,7 @@ MIDIInput - + Input @@ -1577,7 +1852,7 @@ MP3FileReader - + Decoding %1... @@ -1585,686 +1860,690 @@ MainWindow - + Black - + Red - + Blue - - - + + Green - + Purple - + Orange - + White - + Bright Red - + Bright Blue - - - + + Bright Green - + Bright Purple - + Bright Orange + + + + &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 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 +2552,12 @@ Hide center indicator, frame times, layer names and scale - + Show &Minimal Overlays - + 9 @@ -2287,7 +2566,7 @@ Show center indicator only - + 8 @@ -2296,1688 +2575,2013 @@ 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 + + + + + Export SVG File... + + + + + Export a single pane to a scalable SVG image file + + + + + Browse Recorded Audio Folder + + + + + Open the Recorded Audio folder in the system file browser + + + + + Ctrl+Shift+Return + + + + + Subdivide Selected Instants... + + + + + Add new instants at regular intervals between the selected instants + + + + + Winnow Selected Instants... + + + + + Remove subdivisions, leaving only every Nth instant + + + + 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 + + + + + Export the whole pane + + + + + Export the visible area only + + + + + Which region of the current pane do you want to export as a scalable SVG image? + + + + + Failed to save SVG file + + + + + Failed to save SVG file %1 + + + + + Playback speed: %1% (%2x slower) + + + + + Playback speed: %1% (%2x faster) + + + + + Subdivide instants + + + + + Number of subdivisions: + + + + + Winnow instants + + + + + Remove all instants apart from multiples of: + + + + + <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. + + + + + <b>Alignment calculation failed</b><p>Failed to calculate an audio alignment:<p>%1 + + + + + Adjust the master playback level and pan + + + + + <p><small>%1 : %2 configuration, %3-bit build</small></p> + + + + + With Qt v%1 &copy; The Qt Company + + + + + <br>With Rubber Band Library v%1 &copy; Particular Programs Ltd + + + + + <br>With Rubber Band Library &copy; Particular Programs Ltd + + + + + <br>With Vamp plugin support (API v%1, host SDK v%2) &copy; Chris Cannam and QMUL + + + + + <br>With Dataquay Qt/RDF library &copy; Particular Programs Ltd + + + + + <br>With Cap'n Proto serialisation &copy; Sandstorm Development Group + + + + + <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 + + + - - 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 - - - - + 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 + + + + + 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 + + + - - - - - Failed to open file - - - - - - - <b>File open failed</b><p>Audio file "%1" could not be opened - - - - + %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? - - %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 +4589,221 @@ 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 +4811,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 +4889,22 @@ ModelMetadataModel - + Type - + Name - + Maker - + Source @@ -4295,88 +4912,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 +5019,7 @@ - + Time: %1 Pitch: %2 Duration: %3 @@ -4392,68 +5027,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 +5096,47 @@ NoteModel - + Note - + Time - + Frame - + Pitch - + Duration - + Level - + Label - + Unknown - + Edit Data @@ -4509,7 +5144,7 @@ OggVorbisFileReader - + Decoding %1... @@ -4517,12 +5152,12 @@ Overview - + Overview - + Click and drag to navigate; double-click to jump @@ -4530,465 +5165,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 +5466,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 +5507,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 +5635,259 @@ 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 - + + Load mp3 files in gapless mode + + + + + 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 +5895,207 @@ PreferencesDialog - + Sonic Visualiser: Application Preferences - + Apply - + + Green + + + + + + + (auto) + + + + <home directory> - + Follow system locale - + Russian - + British English - + American English - + Czech - - - - - - - - - - - + + + + + + + + + + + + + + %1: - + + Overview waveform colour: + + + + + Run Vamp plugins in separate process: + + + + + Default session template when loading audio files: + + + + + (Use "%1" in the File menu to add to these.) + + + + + Export Session as Template... + + + + + Audio service: + + + + + Audio playback device: + + + + + Audio record device: + + + + + A&udio I/O + + + + User interface language - - Playback audio device: - - - - - &General - - - - + + Allow network usage + + + + + 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 - + + &Other + + + + 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 +6104,7 @@ ProgressDialog - + Cancel @@ -5527,78 +6112,73 @@ PropertyBox - + Show - - Play - - - - - Playback Gain - - - - - dB - - - - - - Playback Pan / Balance - - - - Add New Colour... - Add New Color... - - - + Add New Color... + + Name New Colour - Name New Color - - - + Name New Color + + Enter a name for the new colour: - Enter a name for the new color: - - - + Enter a name for the new color: + + Prefer black background for this colour - Prefer black background for this color - - - + Prefer black background for this color + + + + Click to toggle playback + + + + + Set playback clip: + + + + + Adjust playback level and pan of %1 + + + + + Change sound used for playback (currently "%1") + + + + (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 +6186,37 @@ PropertyContainer - + yes - + on - + true - + no - + off - + false - + Set %1 Property @@ -5644,12 +6224,12 @@ PropertyStack - + Change Layer Visibility - + Click to change the current active layer @@ -5657,7 +6237,7 @@ QApplication - + Sonic Visualiser is a program for viewing and exploring audio data for semantic music analysis and annotation. @@ -5673,7 +6253,7 @@ - + Sonic Visualiser @@ -5681,22 +6261,20 @@ QFile - - - + + File "%1" does not exist - - - + + Failed to open file "%1" - - + + File or URL "%1" could not be retrieved @@ -5704,44 +6282,145 @@ 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 - QuickTimeFileReader - - - Decoding %1... + QObject + + + External plugin host executable does not appear to be installed + + + + + Could not start external plugin host + + + + + External plugin host exited unexpectedly while listing plugins + + + + + External plugin host invocation failed: %1 + + + + + <b>Failed to scan for plugins</b><p>Failed to scan for plugins at startup. Possibly the plugin checker helper program was not correctly installed alongside %1?</p> + + + + + <b>Did not scan for plugins</b><p>Apparently no scan for plugins was attempted (internal error?)</p> + + + + + <b>Failed to load plugins</b><p>Failed to load one or more plugin libraries:</p> + + + + + <p>These plugins may be incompatible with the system, and will be ignored during this run of %1.</p> + + + + + + <unknown> + + + + + Green + + + + + White on Black + + + + + Black on White + + + + + Cherry + + + + + Wasp + + + + + Ice + + + + + Sunset + + + + + Fruit Salad + + + + + Banded + + + + + Highlight + + + + + Printer + + + + + High Gain RDFImporter - + Importing audio referenced in RDF... - + Importing dense signal data from RDF... - + Importing event data from RDF... @@ -5749,7 +6428,7 @@ RangeInputDialog - + to @@ -5757,87 +6436,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 +6532,7 @@ - + Time: %1 Value: %2 Duration: %3 @@ -5853,63 +6540,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 +6604,42 @@ RegionModel - + Region - + Time - + Frame - + Value - + Duration - + Label - + Unknown - + Edit Data @@ -5960,29 +6647,21 @@ RemoveLayerCommand - + Delete %1 Layer - ResamplingWavFileReader - - - Resampling %1... - - - - SVFileReader - - + + (derived model in SV-XML) - + Opening file or URL... @@ -5990,12 +6669,12 @@ SingleColourLayer - + Colour Color - + <unknown> @@ -6003,13 +6682,13 @@ SliceLayer - - + + %1 - %2 - + Time: %1 - %2 Range: %3 samples (%4) Bin: %5 @@ -6017,139 +6696,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 +6836,22 @@ SparseModel - + Sparse - + Edit Data - + Insert Data Point - + Delete Data Point @@ -6180,7 +6859,7 @@ SparseModel::AddPointCommand - + Add Point @@ -6188,7 +6867,7 @@ SparseModel::DeletePointCommand - + Delete Point @@ -6196,7 +6875,7 @@ SparseModel::RelabelCommand - + Re-Label Point @@ -6204,32 +6883,32 @@ SparseOneDimensionalModel - + Sparse 1-D - + Time - + Frame - + Label - + Unknown - + Edit Data @@ -6237,37 +6916,37 @@ SparseTimeValueModel - + Sparse Time-Value - + Time - + Frame - + Value - + Label - + Unknown - + Edit Data @@ -6275,7 +6954,7 @@ SparseValueModel - + Sparse Value @@ -6283,363 +6962,362 @@ 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 - + + Col + + + + + View + + + + + Hybrid + + + + 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 +7325,84 @@ 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 +7410,22 @@ - + First - + Mean - + Peak - + %1 Bin: %2 (%3) Value: %4 @@ -6764,106 +7436,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 +7556,37 @@ TextModel - + Text - + Time - + Frame - + Height - + Label - + Unknown - + Edit Data @@ -6909,39 +7594,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 +7634,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 +7740,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 +7968,27 @@ TipDialog - + Tip of the Day - + Show tip on startup - + << Previous - + Next >> - + Close @@ -7291,136 +7996,141 @@ 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 - + + Failed to list Vamp plugins: %1 + + + + 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 +8138,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 +8203,7 @@ - + Found %n description(s) containing <b>%1</b> Found %n description containing <b>%1</b> @@ -7501,216 +8211,296 @@ - + <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... + + + Exported image from %1 + + 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,139 +8508,124 @@ - + 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 - - WindowShapePreview - + V / time - + dB / freq @@ -7858,7 +8633,7 @@ WritableWaveFileModel - + Writable Wave File diff -r a0a37ed3c07a -r f73a4e8c7040 i18n/sonic-visualiser_ru.qm Binary file i18n/sonic-visualiser_ru.qm has changed diff -r a0a37ed3c07a -r f73a4e8c7040 i18n/sonic-visualiser_ru.ts --- a/i18n/sonic-visualiser_ru.ts Tue Jan 10 16:10:33 2017 +0000 +++ b/i18n/sonic-visualiser_ru.ts Tue Jan 10 16:21:32 2017 +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,25 +38,33 @@ AlignmentModel - + Alignment Выравнивание + AlignmentView + + + AlignmentView + + + + AudioCallbackPlaySource - + Play from %1 Воспроизведение от %1 - + Stop at %1 Остановка в позиции %1 - + Change time-stretch factor to %1 Смена коэффициента растяжения во времени на %1 @@ -64,39 +72,44 @@ AudioDial - - + + Enter new value Введите новое значение - + %1: %2%3 %1: %2%3 - + + %1: %2 + %1: %2 + + + %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 +117,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 +213,7 @@ BundleCommand - + %1 (%n change(s)) %1 (%n изменение) @@ -217,7 +225,8 @@ CSVFileWriter - + + Failed to open file %1 for writing Не удалось открыть файл %1 для записи @@ -225,7 +234,7 @@ CSVFormatDialog - + Select Data Format Выберите формат данных @@ -262,83 +271,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 +375,7 @@ Colour3DPlotLayer - + Time: %1 - %2 Bin: %3 Value: %4 @@ -365,224 +384,255 @@ Значение: %4 - - + + Linear Линейный - + <unknown> <неизвестно> - - + + Colour Цвет - - + + Scale Масштаб - Normalize Columns - Нормализовать столбцы - - - + Нормализовать столбцы + + Normalize Visible Area - Нормализовать видимую область - - - - + Нормализовать видимую область + + + + Log Логарифмический - + +/-1 ±1 - + Invert Vertical Scale Инвертировать масштаб по вертикали - + Always Opaque Всегда непрозрачно - + Absolute Абсолютный - + Gain Усиление - + + Normalization + + + + Smooth - + Bin Scale - + Bins Бины - + + None + + + + + Col + + + + + View + + + + + Hybrid + + + + dB Дб + ColourComboBox + + + Name New Colour + Дайте цвету название + + + + Enter a name for the new colour: + Введите название нового цвета: + + + + Prefer black background for this colour + Предпочитать черный фон для этого цвета + + + + Add New Colour... + Добавить новый цвет... + + + ColourMapper - - <unknown> - <неизвестно> - - - + <неизвестно> + + Default - По умолчанию - - - + По умолчанию + + White on Black - Белое на чёрном - - - + Белое на чёрном + + Black on White - Чёрное на белом - - - + Чёрное на белом + + Red on Blue - Красное на синем - - - + Красное на синем + + Yellow on Black - Жёлтое на чёрном - - - + Жёлтое на чёрном + + Blue on Black - Синее на чёрном - - - + Синее на чёрном + + + Green + Зелёный + + Sunset - Закат - - - + Закат + + Fruit Salad - Фруктовый салат - - - + Фруктовый салат + + Banded - В полоску - - - + В полоску + + Highlight - Подсветка - - - + Подсветка + + Printer - Принтер - - - - High Gain - + Принтер 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 +640,23 @@ CoreAudioFileReader - + Decoding %1... Декодируется %1... + DecodingWavFileReader + + + Decoding %1... + Декодируется %1... + + + Dense3DModelPeakCache - + Dense 3-D Peak Cache @@ -606,17 +664,17 @@ DenseThreeDimensionalModel - + Dense 3-D - + Time Время - + Frame Выборка @@ -624,7 +682,7 @@ DenseTimeValueModel - + Dense Time-Value @@ -632,12 +690,12 @@ Document - + Set main model to %1 Сделать %1 основной моделью - + Clear main model Очистить основную модель @@ -645,7 +703,7 @@ EditableDenseThreeDimensionalModel - + Editable Dense 3-D @@ -653,12 +711,12 @@ FFTModel - + %1 Hz %1 Гц - + FFT FFT @@ -666,22 +724,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 +747,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 +801,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 +1079,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 +1132,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 +1191,38 @@ ImageModel - - + + Image Изображение - + Edit Image Изменить изображение - + Time Время - + Frame Выборка - + Label Метка - + Unknown Неизвестно - + Edit Data Изменить данные @@ -947,41 +1230,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 +1282,7 @@ Все файлы (*.*) - + All supported files (%1 %2) Sonic Visualiser Layer XML files (*.svl) Comma-separated data files (*.csv) @@ -1017,34 +1299,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 +1332,154 @@ Все файлы (*.*) - + 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 (*.*) + + + + + + Scalable Vector Graphics files (*.svg) +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 +1494,7 @@ Все файлы (*.*) - + Sonic Visualiser Layer XML files (*.svl) Comma-separated data files (*.csv) RDF/Turtle files (%1) @@ -1154,75 +1507,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 +1609,65 @@ ItemEditDialog - + Timing Тайминг - + Time: Время: - - + + frames выборок - - + + sec с - - + + usec мс - + Duration: Длительность: - + Properties Свойства - + Value: Значение: - + Text: Текст: - + OK ОК - + Reset Сбросить - + Cancel Отменить @@ -1296,25 +1675,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 +1710,17 @@ LabelCounterInputDialog - + Set Counters Установка счётчиков - + Fine counter (beats): Точный счётчик (доли): - + Coarse counter (bars): Грубый счётчик (такты): @@ -1345,240 +1728,276 @@ 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 + + + Subdivide Points + + + + + Winnow Points + + 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 Воспризведение + LevelPanToolButton + + + Click to adjust level and pan + + + + + LevelPanWidget + + + Drag vertically to adjust level, horizontally to adjust pan + + + + 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 +2005,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 +2095,7 @@ MIDIInput - + Input Вход @@ -1684,7 +2103,7 @@ MP3FileReader - + Decoding %1... Декодируется %1... @@ -1696,29 +2115,29 @@ Sonic Visualiser - - - + + + &Layer С&лой - + &File &Файл - + File Toolbar Панель файлов - + &New Session &Создать сеанс - + Ctrl+N Ctrl+N @@ -1727,7 +2146,7 @@ &Открыть сеанс... - + Ctrl+O Ctrl+O @@ -1736,22 +2155,22 @@ Открыть файл сохранённого ранее сеанса Sonic Visualiser - + &Open... О&ткрыть... - + Open a session file, audio file, or layer Открыть файл сеанса, звуковой файл или слой - + &Save Session Сохр&анить сеанс - + Ctrl+S Ctrl+S @@ -1760,7 +2179,7 @@ Сохранить в файл текущий сеанс Sonic Visualiser - + Save Session &As... Сохранить сеанс &как... @@ -1773,7 +2192,7 @@ &Импортировать звуковой файл... - + Ctrl+I Ctrl+I @@ -1794,478 +2213,593 @@ Импортировать ещё один звуковой файл в отдельный слой - + &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 + + + + + Export SVG File... + + + + + Export a single pane to a scalable SVG image file + + + + + 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 - + + Subdivide Selected Instants... + + + + + Add new instants at regular intervals between the selected instants + + + + + Winnow Selected Instants... + + + + + Remove subdivisions, leaving only every Nth instant + + + + + + + + + + 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 +2824,225 @@ Показать информацию о 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 +3051,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 +3083,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 +3185,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 +3315,17 @@ Отказаться от текущего сеанса Sonic Visualiser и начать новый - + Open Lo&cation... Открыть &местоположение... - + Ctrl+Shift+O Ctrl+Shift+O - + Open or import a file from a remote URL Открыть или импортировать файл с удалённого узла @@ -2795,77 +3334,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 +3413,7 @@ Спрятать индикацию центра, времён выделения, имена слоёв и масштаб - + Show &Minimal Overlays Показывать &минимум перекрытий @@ -2891,7 +3430,7 @@ Показывать индикатор центра, времена выделений, имена слоёв и масштаб - + Show &All Overlays Показывать в&се перекрытия @@ -2904,575 +3443,592 @@ Показывать весь текст и масштаб - + 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>С поддержкой расширений 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,500 +4037,736 @@ Открыть окно, в котором перечисляются клавиатурные комбинации 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) - + + Export the whole pane + + + + + Export the visible area only + + + + + Which region of the current pane do you want to export as a scalable SVG image? + + + + + Failed to save SVG file + + + + + Failed to save SVG file %1 + + + + + Subdivide instants + + + + + Number of subdivisions: + + + + + Winnow instants + + + + + Remove all instants apart from multiples of: + + + + + <b>Alignment calculation failed</b><p>Failed to calculate an audio alignment:<p>%1 + + + + + Adjust the master playback level and pan + + + + + <p><small>%1 : %2 configuration, %3-bit build</small></p> + + + + + With Qt v%1 &copy; The Qt Company + + + + + <br>With Rubber Band Library v%1 &copy; Particular Programs Ltd + + + + + <br>With Rubber Band Library &copy; Particular Programs Ltd + + + + + <br>With Vamp plugin support (API v%1, host SDK v%2) &copy; Chris Cannam and QMUL + + + + + <br>With Dataquay Qt/RDF library &copy; Particular Programs Ltd + + + + + <br>With Cap'n Proto serialisation &copy; Sandstorm Development Group + + + + + <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 - - - + <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> - - - + <p><small>%1 : конфигурация %2</small></p> + + With Qt v%1 &copy; Nokia Corporation - С использованием 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 + <br>С Rubber Band v%1 &copy; Chris Cannam <br>With Raptor RDF parser v%1 &copy; Dave Beckett and the University of Bristol @@ -3993,260 +4785,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 +5052,142 @@ Загрузить этот файл в новое окно волновой формы - + 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> - - + + Importing from RDF... Выполняется импорт из RDF... @@ -4391,43 +5196,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 +5254,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 +5332,22 @@ ModelMetadataModel - + Type Тип - + Name Название - + Maker Создатель - + Source Источник @@ -4550,48 +5355,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 +5425,7 @@ Без метки - + Time: %1 Pitch: %2 Duration: %3 @@ -4613,108 +5436,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 +5545,47 @@ NoteModel - + Note Нота - + Time Время - + Frame Выборка - + Pitch Высота тона - + Duration Длительность - + Level Уровень - + Label Метка - + Unknown Неизвестно - + Edit Data Изменить данные @@ -4770,7 +5593,7 @@ OggVorbisFileReader - + Decoding %1... Декодируется %1... @@ -4778,12 +5601,12 @@ Overview - + Overview Обзор - + Click and drag to navigate; double-click to jump Щёлкните и потащите для перемещения по окну; щёлкните дважды для скачка @@ -4791,465 +5614,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 +5991,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 +6054,12 @@ PluginParameterBox - + This plugin has no adjustable parameters. У этого расширения нет изменяемых параметров. - + Program Программа @@ -5330,58 +6067,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 +6127,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 +6198,263 @@ Preferences - + Frequency of concert A Частота условной ноты Ля (A) - + Property box layout Внешний вид панели свойств - + Spectral analysis window shape Форма оконной функции при спектральном анализе - + + Normalise audio signal when reading from audio file + + + + + Load mp3 files in gapless mode + + + + + 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 +6462,201 @@ PreferencesDialog - + Apply Применить - - - - - - - - - - - + + + + + + + + + + + + + + %1: %1: - + + Default spectrogram colour: + + + + + Default melodic spectrogram colour: + + + + + Default colour 3D plot colour: + + + + + &Other + + + + OK ОК - + Cancel Отменить - + Sonic Visualiser: Application Preferences Параметры работы Sonic Visualiser - + + Green + Зелёный + + + + + + (auto) + (авто) + + + <home directory> <домашний каталог> - + Follow system locale - + Russian - + British English - + American English - + Czech - + + Overview waveform colour: + + + + + Run Vamp plugins in separate process: + + + + + Default session template when loading audio files: + + + + + (Use "%1" in the File menu to add to these.) + + + + + Export Session as Template... + + + + + Audio service: + + + + + Audio playback device: + + + + + Audio record device: + + + + + A&udio I/O + + + + User interface language - + + Allow network usage + + + &General - О&бщие - - - - Default session template for audio files: - - - - + О&бщие + + + + Draw layers at Retina resolution: + + + + 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 +6664,16 @@ Применить их перед закрытием? - Playback audio device: - Устройство воспроизведения: - - - + Устройство воспроизведения: + + + &Appearance Об&лик - + Anal&ysis &Анализ @@ -5812,7 +6681,7 @@ ProgressDialog - + Cancel Отменить @@ -5820,116 +6689,127 @@ PropertyBox - + Show Показать - Play - Воспроизвести - - - - + Воспроизвести + + Playback Pan / Balance - Панорама/баланс при воспроизведении - - - + Панорама/баланс при воспроизведении + + Playback Gain - Усиление воспроизведения - - - + Усиление воспроизведения + + dB - Дб - - - + Дб + + + + Click to toggle playback + + + + + Set playback clip: + + + + + Adjust playback level and pan of %1 + + + + + Change sound used for playback (currently "%1") + + + + (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 - Предпочитать черный фон для этого цвета + Предпочитать черный фон для этого цвета PropertyContainer - + yes да - + on вкл - + true правда - + no нет - + off выкл - + false ложь - + Set %1 Property Установить свойство %1 @@ -5944,12 +6824,12 @@ PropertyStack - + Click to change the current active layer Щёлкните для смены активного слоя - + Change Layer Visibility Переключить видимость слоя @@ -5957,7 +6837,7 @@ QApplication - + Sonic Visualiser is a program for viewing and exploring audio data for semantic music analysis and annotation. @@ -5984,7 +6864,7 @@ - + Sonic Visualiser Sonic Visualiser @@ -5992,22 +6872,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,44 +6893,152 @@ 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 + + + External plugin host executable does not appear to be installed + + + + + Could not start external plugin host + + + + + External plugin host exited unexpectedly while listing plugins + + + + + External plugin host invocation failed: %1 + + + + + <b>Failed to scan for plugins</b><p>Failed to scan for plugins at startup. Possibly the plugin checker helper program was not correctly installed alongside %1?</p> + + + + + <b>Did not scan for plugins</b><p>Apparently no scan for plugins was attempted (internal error?)</p> + + + + + <b>Failed to load plugins</b><p>Failed to load one or more plugin libraries:</p> + + + + + <p>These plugins may be incompatible with the system, and will be ignored during this run of %1.</p> + + + + + + <unknown> + <неизвестно> + + + + Green + Зелёный + + + + White on Black + Белое на чёрном + + + + Black on White + Чёрное на белом + + + + Cherry + + + + + Wasp + + + + + Ice + + + + + Sunset + Закат + + + + Fruit Salad + Фруктовый салат + + + + Banded + В полоску + + + + Highlight + Подсветка + + + + Printer + Принтер + + + + High Gain + + + + QuickTimeFileReader - Decoding %1... - Декодируется %1... + Декодируется %1... RDFImporter - + Importing audio referenced in RDF... - + Importing dense signal data from RDF... - + Importing event data from RDF... @@ -6060,7 +7046,7 @@ RangeInputDialog - + to до @@ -6068,81 +7054,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 +7147,7 @@ Без метки - + Time: %1 Value: %2 Duration: %3 @@ -6164,69 +7158,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 +7228,42 @@ RegionModel - + Region Область - + Time Время - + Frame Выборка - + Value Значение - + Duration Длительность - + Label Метка - + Unknown Неизвестно - + Edit Data Изменить данные @@ -6277,7 +7271,7 @@ RemoveLayerCommand - + Delete %1 Layer Удалить слой %1 @@ -6285,21 +7279,20 @@ ResamplingWavFileReader - Resampling %1... - Ресэмплирование %1... + Ресэмплирование %1... SVFileReader - - + + (derived model in SV-XML) (модель извлечена в SV-XML) - + Opening file or URL... Открывается файл или URL... @@ -6307,12 +7300,12 @@ SingleColourLayer - + Colour Цвет - + <unknown> <неизвестно> @@ -6320,113 +7313,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 +7430,40 @@ %6 значение: %7 - + Time: %1 - %2 Range: %3 samples (%4) Время: %1 - %2 Диапазон: %3 сэмплов (%4) - + Threshold Порог - + Bin Scale - + Bins Бины - - + + Log - + Absolute Абсолютный - + Rev Log @@ -6490,22 +7483,22 @@ Переразметить точку - + Sparse - + Edit Data Изменить данные - + Insert Data Point - + Delete Data Point @@ -6513,7 +7506,7 @@ SparseModel::AddPointCommand - + Add Point Добавить точку @@ -6521,7 +7514,7 @@ SparseModel::DeletePointCommand - + Delete Point Удалить точку @@ -6529,7 +7522,7 @@ SparseModel::RelabelCommand - + Re-Label Point Переразметить точку @@ -6537,32 +7530,32 @@ SparseOneDimensionalModel - + Sparse 1-D - + Time Время - + Frame Выборка - + Label Метка - + Unknown Неизвестно - + Edit Data Изменить данные @@ -6570,37 +7563,37 @@ SparseTimeValueModel - + Sparse Time-Value - + Time Время - + Frame Выборка - + Value Значение - + Label Метка - + Unknown Неизвестно - + Edit Data Изменить данные @@ -6608,7 +7601,7 @@ SparseValueModel - + Sparse Value @@ -6616,250 +7609,269 @@ 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 + + + + + Col + + + + + View + + + + + Hybrid + + + + 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 +7880,7 @@ - + %1Bin Frequency: %2 Hz %3Bin Pitch: %4 @@ -6877,115 +7889,107 @@ - - -Inf - -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 +7997,88 @@ 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 - - - + -Inf + + + %1 %1 - + %1 Bin: %2 (%3) %4 value: %5 @@ -7087,17 +8089,17 @@ Дб: %6 - + First - + Peak Пик - + %1 Bin: %2 (%3) Value: %4 @@ -7108,7 +8110,7 @@ Дб: %5 - + Show Peak Frequencies Показывать пиковые частоты @@ -7120,7 +8122,7 @@ SubdividingMenu - + %1 - %2 %1 - %2 @@ -7128,35 +8130,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 +8169,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 +8244,37 @@ TextModel - + Text Текст - + Time Время - + Frame Выборка - + Height Высота - + Label Метка - + Unknown Неизвестно - + Edit Data Изменить данные @@ -7278,39 +8282,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 +8322,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 +8430,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 +8683,27 @@ TipDialog - + Tip of the Day Совет дня - + Show tip on startup Показывать советы при запуске - + << Previous << Предыдущий - + Next >> Следующий >> - + Close Закрыть @@ -7667,136 +8711,141 @@ TransformFactory - - + + %1: %2 %1: %2 - + %1: Output %2 %1: Выход %2 - + Analysis Анализ - + Effects Data Данные эффектов - + Effects Эффекты - + [\(<].*$ [\(<].*$ - - + + Failed to list Vamp plugins: %1 + + + + + <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 +8853,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 +8889,7 @@ - + Found %n description(s) containing <b>%1</b> Найдено %n описание, содержащее <b>%1</b> @@ -7849,148 +8898,223 @@ - + <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... Отрисовывается изображение... - + + Exported image from %1 + + + + Alignment Выравнивание @@ -7998,97 +9122,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 +9226,7 @@ - + Change overlay level @@ -8120,133 +9249,129 @@ 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 + -Inf WindowShapePreview - + V / time V / время - + dB / freq Дб / частота @@ -8254,7 +9379,7 @@ WritableWaveFileModel - + Writable Wave File Записываемый звуковой файл diff -r a0a37ed3c07a -r f73a4e8c7040 main/MainWindow.cpp --- a/main/MainWindow.cpp Tue Jan 10 16:10:33 2017 +0000 +++ b/main/MainWindow.cpp Tue Jan 10 16:21:32 2017 +0000 @@ -42,11 +42,12 @@ #include "layer/SliceableLayer.h" #include "layer/ImageLayer.h" #include "layer/RegionLayer.h" -#include "widgets/Fader.h" #include "view/Overview.h" #include "widgets/PropertyBox.h" #include "widgets/PropertyStack.h" #include "widgets/AudioDial.h" +#include "widgets/LevelPanWidget.h" +#include "widgets/LevelPanToolButton.h" #include "widgets/IconLoader.h" #include "widgets/LayerTreeDialog.h" #include "widgets/ListInputDialog.h" @@ -57,10 +58,9 @@ #include "widgets/LabelCounterInputDialog.h" #include "widgets/ActivityLog.h" #include "widgets/UnitConverter.h" -#include "audioio/AudioCallbackPlaySource.h" -#include "audioio/AudioCallbackPlayTarget.h" -#include "audioio/AudioTargetFactory.h" -#include "audioio/PlaySpeedRangeMapper.h" +#include "audio/AudioCallbackPlaySource.h" +#include "audio/AudioCallbackRecordTarget.h" +#include "audio/PlaySpeedRangeMapper.h" #include "data/fileio/DataFileReaderFactory.h" #include "data/fileio/PlaylistFileReader.h" #include "data/fileio/WavFileWriter.h" @@ -68,9 +68,9 @@ #include "data/fileio/MIDIFileWriter.h" #include "data/fileio/BZipFileDevice.h" #include "data/fileio/FileSource.h" -#include "data/fft/FFTDataServer.h" #include "data/midi/MIDIInput.h" #include "base/RecentFiles.h" +#include "plugin/PluginScan.h" #include "transform/TransformFactory.h" #include "transform/ModelTransformerFactory.h" #include "base/PlayParameterRepository.h" @@ -94,6 +94,9 @@ #include "plugin/api/ladspa.h" #include "plugin/api/dssi.h" +#include +#include + #include #include #include @@ -117,9 +120,11 @@ #include #include #include +#include #include #include #include +#include #include #include @@ -130,8 +135,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 +160,7 @@ m_ffwdSimilarAction(0), m_ffwdEndAction(0), m_playAction(0), + m_recordAction(0), m_playSelectionAction(0), m_playLoopAction(0), m_soloModified(false), @@ -207,7 +213,9 @@ m_overview = new Overview(frame); m_overview->setViewManager(m_viewManager); - m_overview->setFixedHeight(40); + int overviewHeight = m_viewManager->scalePixelSize(35); + if (overviewHeight < 40) overviewHeight = 40; + m_overview->setFixedHeight(overviewHeight); #ifndef _WIN32 // For some reason, the contents of the overview never appear if we // make this setting on Windows. I have no inclination at the moment @@ -222,24 +230,14 @@ m_panLayer->setAggressiveCacheing(true); m_overview->addLayer(m_panLayer); - if (m_viewManager->getGlobalDarkBackground()) { - m_panLayer->setBaseColour - (ColourDatabase::getInstance()->getColourIndex(tr("Bright Green"))); - } else { - m_panLayer->setBaseColour - (ColourDatabase::getInstance()->getColourIndex(tr("Green"))); - } - - m_fader = new Fader(frame, false); - connect(m_fader, SIGNAL(mouseEntered()), this, SLOT(mouseEnteredWidget())); - connect(m_fader, SIGNAL(mouseLeft()), this, SLOT(mouseLeftWidget())); + coloursChanged(); // sets pan layer colour from preferences m_playSpeed = new AudioDial(frame); m_playSpeed->setMinimum(0); m_playSpeed->setMaximum(120); m_playSpeed->setValue(60); - m_playSpeed->setFixedWidth(32); - m_playSpeed->setFixedHeight(32); + m_playSpeed->setFixedWidth(overviewHeight); + m_playSpeed->setFixedHeight(overviewHeight); m_playSpeed->setNotchesVisible(true); m_playSpeed->setPageStep(10); m_playSpeed->setObjectName(tr("Playback Speed")); @@ -251,34 +249,43 @@ connect(m_playSpeed, SIGNAL(mouseEntered()), this, SLOT(mouseEnteredWidget())); connect(m_playSpeed, SIGNAL(mouseLeft()), this, SLOT(mouseLeftWidget())); - IconLoader il; + m_mainLevelPan = new LevelPanToolButton(frame); + connect(m_mainLevelPan, SIGNAL(mouseEntered()), this, SLOT(mouseEnteredWidget())); + connect(m_mainLevelPan, SIGNAL(mouseLeft()), this, SLOT(mouseLeftWidget())); + m_mainLevelPan->setFixedHeight(overviewHeight); + m_mainLevelPan->setFixedWidth(overviewHeight); + m_mainLevelPan->setImageSize((overviewHeight * 3) / 4); + m_mainLevelPan->setBigImageSize(overviewHeight * 3); m_playControlsSpacer = new QFrame; - layout->setSpacing(4); - layout->addWidget(m_mainScroll, 0, 0, 1, 5); - layout->addWidget(m_overview, 1, 1); + layout->setSpacing(m_viewManager->scalePixelSize(4)); + layout->addWidget(m_mainScroll, 0, 0, 1, 4); + layout->addWidget(m_overview, 1, 0); + layout->addWidget(m_playSpeed, 1, 1); layout->addWidget(m_playControlsSpacer, 1, 2); - layout->addWidget(m_playSpeed, 1, 3); - layout->addWidget(m_fader, 1, 4); + layout->addWidget(m_mainLevelPan, 1, 3); m_playControlsWidth = - m_fader->width() + m_playSpeed->width() + layout->spacing() * 2; - - layout->setColumnMinimumWidth(0, 14); - layout->setColumnStretch(0, 0); + m_mainLevelPan->width() + m_playSpeed->width() + layout->spacing() * 2; m_paneStack->setPropertyStackMinWidth(m_playControlsWidth + 2 + layout->spacing()); m_playControlsSpacer->setFixedSize(QSize(2, 2)); - layout->setColumnStretch(1, 10); + layout->setColumnStretch(0, 10); connect(m_paneStack, SIGNAL(propertyStacksResized(int)), this, SLOT(propertyStacksResized(int))); frame->setLayout(layout); +#ifdef Q_OS_MAC + // Mac doesn't align menu labels when icons are shown: result is messy + QApplication::setAttribute(Qt::AA_DontShowIconsInMenus); + setIconsVisibleInMenus(false); +#endif + setupMenus(); setupToolbars(); setupHelpMenu(); @@ -298,9 +305,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 +334,13 @@ m_surveyer = 0; m_versionTester = 0; } + + QTimer::singleShot(500, this, SLOT(betaReleaseWarning())); + + QString warning = PluginScan::getInstance()->getStartupFailureReport(); + if (warning != "") { + QTimer::singleShot(500, this, SLOT(pluginPopulationWarning())); + } } MainWindow::~MainWindow() @@ -354,16 +371,15 @@ // the system menubar integration altogether. Like this: menuBar()->setNativeMenuBar(false); // fix #1039 #endif - + m_rightButtonMenu = new QMenu(); - // No -- we don't want tear-off enabled on the right-button - // menu. If it is enabled, then simply right-clicking and - // releasing will pop up the menu, activate the tear-off, and - // leave the torn-off menu window in front of the main window. - // That isn't desirable. I'm not sure it ever would be, in a - // context menu -- perhaps technically a Qt bug? -// m_rightButtonMenu->setTearOffEnabled(true); + // We don't want tear-off enabled on the right-button menu. + // If it is enabled, then simply right-clicking and releasing + // will pop up the menu, activate the tear-off, and leave the + // torn-off menu window in front of the main window. That + // isn't desirable. + m_rightButtonMenu->setTearOffEnabled(false); } if (m_rightButtonTransformsMenu) { @@ -459,7 +475,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 +484,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 +524,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 +534,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())); @@ -585,6 +597,19 @@ connect(this, SIGNAL(canExportImage(bool)), action, SLOT(setEnabled(bool))); menu->addAction(action); + action = new QAction(tr("Export SVG File..."), this); + action->setStatusTip(tr("Export a single pane to a scalable SVG image file")); + connect(action, SIGNAL(triggered()), this, SLOT(exportSVG())); + connect(this, SIGNAL(canExportImage(bool)), action, SLOT(setEnabled(bool))); + menu->addAction(action); + + 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"); @@ -828,6 +853,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 +1080,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 +1209,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 +1525,11 @@ TransformFactory *factory = TransformFactory::getInstance(); TransformList transforms = factory->getAllTransformDescriptions(); + + if (factory->getStartupFailureReport() != "") { + pluginPopulationWarning(); + } + vector types = factory->getAllTransformTypes(); map > categoryMenus; @@ -1738,6 +1788,11 @@ connect(action, SIGNAL(triggered()), this, SLOT(website())); menu->addAction(action); + action = new QAction(tr("What's &New?").arg(name), this); + action->setStatusTip(tr("Show changes in this release of %1").arg(name)); + connect(action, SIGNAL(triggered()), this, SLOT(whatsNew())); + menu->addAction(action); + action = new QAction(tr("&About %1").arg(name), this); action->setStatusTip(tr("Show information about %1").arg(name)); connect(action, SIGNAL(triggered()), this, SLOT(about())); @@ -1750,8 +1805,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 +2043,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 +2104,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 +2117,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 +2132,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 +2148,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 +2356,7 @@ (haveCurrentPane && (currentLayer != 0)); bool havePlayTarget = - (m_playTarget != 0); + (m_playTarget != 0 || m_audioIO != 0); bool haveSelection = (m_viewManager && !m_viewManager->getSelections().empty()); @@ -2344,9 +2420,11 @@ QString description; +//!!!??? + sv_samplerate_t ssr = getMainModel()->getSampleRate(); sv_samplerate_t tsr = ssr; - if (m_playSource) tsr = m_playSource->getTargetSampleRate(); + if (m_playSource) tsr = m_playSource->getDeviceSampleRate(); if (ssr != tsr) { description = tr("%1Hz (resampling to %2Hz)").arg(ssr).arg(tsr); @@ -2798,17 +2876,15 @@ if (!pane) return; QString path = getSaveFileName(FileFinder::ImageFile); - if (path == "") return; - if (QFileInfo(path).suffix() == "") path += ".png"; - + bool haveSelection = m_viewManager && !m_viewManager->getSelections().empty(); QSize total, visible, selected; - total = pane->getImageSize(); - visible = pane->getImageSize(pane->getFirstVisibleFrame(), - pane->getLastVisibleFrame()); + total = pane->getRenderedImageSize(); + visible = pane->getRenderedPartImageSize(pane->getFirstVisibleFrame(), + pane->getLastVisibleFrame()); sv_frame_t sf0 = 0, sf1 = 0; @@ -2818,7 +2894,7 @@ MultiSelection::SelectionList::iterator e = selections.end(); --e; sf1 = e->getEndFrame(); - selected = pane->getImageSize(sf0, sf1); + selected = pane->getRenderedPartImageSize(sf0, sf1); } QStringList items; @@ -2847,7 +2923,7 @@ if (!haveSelection) { lid->setItemAvailability(2, false); } - if (total.width() > 32767) { // appears to be the limit of a QImage + if (total.width() > 32767) { // appears to be limit of a QImage lid->setItemAvailability(0, false); lid->setFootnote(tr("Note: the whole pane is too wide to be exported as a single image.")); } @@ -2861,18 +2937,18 @@ settings.setValue("lastimageexportregion", deflt); QImage *image = 0; - + if (item == items[0]) { - image = pane->toNewImage(); + image = pane->renderToNewImage(); } else if (item == items[1]) { - image = pane->toNewImage(pane->getFirstVisibleFrame(), - pane->getLastVisibleFrame()); + image = pane->renderPartToNewImage(pane->getFirstVisibleFrame(), + pane->getLastVisibleFrame()); } else if (haveSelection) { - image = pane->toNewImage(sf0, sf1); + image = pane->renderPartToNewImage(sf0, sf1); } - + if (!image) return; - + if (!image->save(path, "PNG")) { QMessageBox::critical(this, tr("Failed to save image file"), tr("Failed to save image file %1").arg(path)); @@ -2882,6 +2958,85 @@ } void +MainWindow::exportSVG() +{ + Pane *pane = m_paneStack->getCurrentPane(); + if (!pane) return; + + QString path = getSaveFileName(FileFinder::SVGFile); + if (path == "") return; + if (QFileInfo(path).suffix() == "") path += ".svg"; + + bool haveSelection = m_viewManager && !m_viewManager->getSelections().empty(); + + sv_frame_t sf0 = 0, sf1 = 0; + + if (haveSelection) { + MultiSelection::SelectionList selections = m_viewManager->getSelections(); + sf0 = selections.begin()->getStartFrame(); + MultiSelection::SelectionList::iterator e = selections.end(); + --e; + sf1 = e->getEndFrame(); + } + + QStringList items; + items << tr("Export the whole pane"); + items << tr("Export the visible area only"); + items << tr("Export the selection extent"); + + QSettings settings; + settings.beginGroup("MainWindow"); + int deflt = settings.value("lastsvgexportregion", 0).toInt(); + if (deflt == 2 && !haveSelection) deflt = 1; + + ListInputDialog *lid = new ListInputDialog + (this, tr("Select region to export"), + tr("Which region of the current pane do you want to export as a scalable SVG image?"), + items, deflt); + + if (!haveSelection) { + lid->setItemAvailability(2, false); + } + + bool ok = lid->exec(); + QString item = lid->getCurrentString(); + delete lid; + + if (!ok || item.isEmpty()) return; + + settings.setValue("lastsvgexportregion", deflt); + + bool result = false; + + if (item == items[0]) { + result = pane->renderToSvgFile(path ); + } else if (item == items[1]) { + result = pane->renderPartToSvgFile(path, + pane->getFirstVisibleFrame(), + pane->getLastVisibleFrame()); + } else if (haveSelection) { + result = pane->renderPartToSvgFile(path, sf0, sf1); + } + + if (!result) { + QMessageBox::critical(this, tr("Failed to save SVG file"), + tr("Failed to save SVG file %1").arg(path)); + } +} + +void +MainWindow::browseRecordedAudio() +{ + if (!m_recordTarget) return; + + QString path = m_recordTarget->getRecordContainerFolder(); + if (path == "") path = m_recordTarget->getRecordFolder(); + if (path == "") return; + + openLocalFolder(path); +} + +void MainWindow::newSession() { if (!checkSaveModified()) return; @@ -3030,8 +3185,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 +3199,9 @@ } QString path = action->text(); +#endif + /* End of F. Nicol patch 13 Aug. 2016 */ + if (path == "") return; FileOpenStatus status = openPath(path, ReplaceSession); @@ -3125,6 +3285,7 @@ tr("Template file exists

The template \"%1\" already exists.
Overwrite it?").arg(name), QMessageBox::Ok | QMessageBox::Cancel, QMessageBox::Cancel) != QMessageBox::Ok) { + delete d; return; } } @@ -3135,6 +3296,8 @@ } } } + + delete d; } void @@ -3241,7 +3404,7 @@ if (m_preferencesDialog && m_preferencesDialog->isVisible()) { closeSession(); // otherwise we'll have to wait for prefs changes - m_preferencesDialog->applicationClosing(false); + m_preferencesDialog->applicationClosing(true); } closeSession(); @@ -3420,18 +3583,33 @@ { MainWindowBase::preferenceChanged(name); - if (name == "Background Mode" && m_viewManager) { - if (m_viewManager->getGlobalDarkBackground()) { - m_panLayer->setBaseColour - (ColourDatabase::getInstance()->getColourIndex(tr("Bright Green"))); - } else { - m_panLayer->setBaseColour - (ColourDatabase::getInstance()->getColourIndex(tr("Green"))); - } + if (name == "Background Mode") { + coloursChanged(); } } void +MainWindow::coloursChanged() +{ + QSettings settings; + settings.beginGroup("Preferences"); + QString defaultColourName(tr("Green")); + if (m_viewManager && m_viewManager->getGlobalDarkBackground()) { + defaultColourName = tr("Bright Green"); + } + ColourDatabase *cdb = ColourDatabase::getInstance(); + QColor colour = QColor + (settings.value("overview-colour", + cdb->getColour(defaultColourName).name()).toString()); + settings.endGroup(); + + int index = cdb->getColourIndex(colour); + if (index >= 0) { + m_panLayer->setBaseColour(index); + } +} + +void MainWindow::propertyStacksResized(int width) { // SVDEBUG << "MainWindow::propertyStacksResized(" << width << ")" << endl; @@ -4059,10 +4237,9 @@ } void -MainWindow::outputLevelsChanged(float left, float right) +MainWindow::monitoringLevelsChanged(float left, float right) { - m_fader->setPeakLeft(left); - m_fader->setPeakRight(right); + m_mainLevelPan->setMonitoringLevels(left, right); } void @@ -4101,6 +4278,34 @@ } void +MainWindow::betaReleaseWarning() +{ + QMessageBox::information + (this, tr("Beta release"), + tr("This is a beta release of Sonic Visualiser

Please see the \"What's New\" option in the Help menu for a list of changes since the last proper release.

")); +} + +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,9 +4442,32 @@ MainWindowBase::mainModelChanged(model); + if (m_playTarget || m_audioIO) { + connect(m_mainLevelPan, SIGNAL(levelChanged(float)), + this, SLOT(mainModelGainChanged(float))); + connect(m_mainLevelPan, SIGNAL(panChanged(float)), + this, SLOT(mainModelPanChanged(float))); + } +} + +void +MainWindow::mainModelGainChanged(float gain) +{ if (m_playTarget) { - connect(m_fader, SIGNAL(valueChanged(float)), - m_playTarget, SLOT(setOutputGain(float))); + m_playTarget->setOutputGain(gain); + } else if (m_audioIO) { + m_audioIO->setOutputGain(gain); + } +} + +void +MainWindow::mainModelPanChanged(float balance) +{ + // this is indeed stereo balance rather than pan + if (m_playTarget) { + m_playTarget->setOutputBalance(balance); + } else if (m_audioIO) { + m_audioIO->setOutputBalance(balance); } } @@ -4304,6 +4532,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(); @@ -4376,15 +4648,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); } @@ -4442,6 +4712,11 @@ m_preferencesDialog = new PreferencesDialog(this); + connect(m_preferencesDialog, SIGNAL(audioDeviceChanged()), + this, SLOT(recreateAudioIO())); + connect(m_preferencesDialog, SIGNAL(coloursChanged()), + this, SLOT(coloursChanged())); + // DeleteOnClose is safe here, because m_preferencesDialog is a // QPointer that will be zeroed when the dialog is deleted. We // use it in preference to leaving the dialog lying around because @@ -4462,8 +4737,8 @@ QWidget *w = dynamic_cast(sender()); if (!w) return; - if (w == m_fader) { - contextHelpChanged(tr("Adjust the master playback level")); + if (w == m_mainLevelPan) { + contextHelpChanged(tr("Adjust the master playback level and pan")); } else if (w == m_playSpeed) { contextHelpChanged(tr("Adjust the master playback speed")); } @@ -4488,6 +4763,61 @@ } void +MainWindow::whatsNew() +{ + QFile changelog(":CHANGELOG"); + changelog.open(QFile::ReadOnly); + QByteArray content = changelog.readAll(); + QString text = QString::fromUtf8(content); + + QDialog *d = new QDialog(this); + d->setWindowTitle(tr("What's New")); + + QGridLayout *layout = new QGridLayout; + d->setLayout(layout); + + int row = 0; + + QLabel *iconLabel = new QLabel; + iconLabel->setPixmap(QApplication::windowIcon().pixmap(64, 64)); + layout->addWidget(iconLabel, row, 0); + + layout->addWidget + (new QLabel(tr("

What's New in %1

") + .arg(QApplication::applicationName())), + row++, 1); + layout->setColumnStretch(2, 10); + + QTextEdit *textEdit = new QTextEdit; + layout->addWidget(textEdit, row++, 1, 1, 2); + + if (m_newerVersionIs != "") { + layout->addWidget(new QLabel(tr("Note: A newer version of Sonic Visualiser is available.
(Version %1 is available; you are using version %2)").arg(m_newerVersionIs).arg(SV_VERSION)), row++, 1, 1, 2); + } + + QDialogButtonBox *bb = new QDialogButtonBox(QDialogButtonBox::Ok); + layout->addWidget(bb, row++, 0, 1, 3); + connect(bb, SIGNAL(accepted()), d, SLOT(accept())); + + text.replace(QRegExp("(.)\n +(.)"), "\\1 \\2"); + text.replace(QRegExp("\n - ([^\n]+)"), "\n
  • \\1
  • "); + text.replace(QRegExp(": *\n"), ":\n
      \n"); + text.replace(QRegExp("\n\\s*\n"), "\n
    \n\n"); + text.replace(QRegExp("\n(\\w[^:\n]+:)"), "\n

    \\1

    "); +// text.replace(QRegExp("
  • ([^,.\n]+)([,.] +\\w)"), "
  • \\1\\2"); + + textEdit->setHtml(text); + textEdit->setReadOnly(true); + + d->setMinimumSize(m_viewManager->scalePixelSize(520), + m_viewManager->scalePixelSize(450)); + + d->exec(); + + delete d; +} + +void MainWindow::about() { bool debug = false; @@ -4512,13 +4842,20 @@ 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")); - - aboutText += ""; - - aboutText += tr("With Qt v%1 © Nokia Corporation").arg(QT_VERSION_STR); + .arg(debug ? tr("Debug") : tr("Release")) + .arg(sizeof(void *) * 8); + + if (m_oscQueue && m_oscQueue->isOK()) { + aboutText += tr("

    The OSC URL for this instance is: \"%1\"").arg(m_oscQueue->getOSCURL()); + } + + aboutText += "

    "; + + aboutText += tr("With Qt v%1 © The Qt Company").arg(QT_VERSION_STR); + + aboutText += ""; #ifdef HAVE_JACK #ifdef JACK_VERSION @@ -4574,14 +4911,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 @@ -4590,8 +4925,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 @@ -4601,27 +4936,73 @@ aboutText += tr("
    With liblo Lite OSC library © Steve Harris"); #endif // LIBLO_VERSION - if (m_oscQueue && m_oscQueue->isOK()) { - aboutText += tr("

    The OSC URL for this instance is: \"%1\"").arg(m_oscQueue->getOSCURL()); - } - aboutText += "

    "; #endif // HAVE_LIBLO -#ifndef BUILD_STATIC - aboutText.replace(tr("With "), tr("Using ")); -#endif - aboutText += - "

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

    Sonic Visualiser Copyright © 2005–2017 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 " "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.

    "; + + // use our own dialog so we can influence the size + + QDialog *d = new QDialog(this); + + d->setWindowTitle(tr("About %1").arg(QApplication::applicationName())); + + QGridLayout *layout = new QGridLayout; + d->setLayout(layout); + + int row = 0; - QMessageBox::about(this, tr("About Sonic Visualiser"), aboutText); + QLabel *iconLabel = new QLabel; + iconLabel->setPixmap(QApplication::windowIcon().pixmap(64, 64)); + layout->addWidget(iconLabel, row, 0, Qt::AlignTop); + + QLabel *mainText = new QLabel(); + layout->addWidget(mainText, row, 1, 1, 2); + + layout->setRowStretch(row, 10); + layout->setColumnStretch(1, 10); + + ++row; + + QDialogButtonBox *bb = new QDialogButtonBox(QDialogButtonBox::Ok); + layout->addWidget(bb, row++, 0, 1, 3); + connect(bb, SIGNAL(accepted()), d, SLOT(accept())); + +// mainText->setHtml(aboutText); +// mainText->setReadOnly(true); + mainText->setWordWrap(true); + mainText->setOpenExternalLinks(true); + mainText->setText(aboutText); + + d->setMinimumSize(m_viewManager->scalePixelSize(420), + m_viewManager->scalePixelSize(200)); + + d->exec(); + + delete d; + /* + QMessageBox about(QMessageBox::Information, + tr("About Sonic Visualiser"), + aboutText, + QMessageBox::StandardButtons(QMessageBox::Ok), + this); + + QIcon icon = QApplication::windowIcon(); + QSize size = icon.actualSize(QSize(64, 64)); + about.setIconPixmap(icon.pixmap(size)); + + about.setMinimumSize(m_viewManager->scalePixelSize(400), + m_viewManager->scalePixelSize(400)); + + about.exec(); + */ } void @@ -4633,6 +5014,8 @@ void MainWindow::newerVersionAvailable(QString version) { + m_newerVersionIs = version; + QSettings settings; settings.beginGroup("NewerVersionWarning"); QString tag = QString("version-%1-available-show").arg(version); diff -r a0a37ed3c07a -r f73a4e8c7040 main/MainWindow.h --- a/main/MainWindow.h Tue Jan 10 16:10:33 2017 +0000 +++ b/main/MainWindow.h Tue Jan 10 16:21:32 2017 +0000 @@ -32,8 +32,7 @@ Q_OBJECT public: - MainWindow(bool withAudioOutput = true, - bool withOSCSupport = true); + MainWindow(SoundOptions options, bool withOSCSupport = true); virtual ~MainWindow(); signals: @@ -42,6 +41,8 @@ public slots: virtual void preferenceChanged(PropertyContainer::PropertyName); + virtual void coloursChanged(); + virtual bool commitData(bool mayAskUser); void goFullScreen(); @@ -53,13 +54,17 @@ 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 exportSVG(); + virtual void browseRecordedAudio(); virtual void saveSession(); virtual void saveSessionAs(); virtual void newSession(); @@ -88,12 +93,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); @@ -126,12 +133,14 @@ virtual void slowDownPlayback(); virtual void restoreNormalPlayback(); - virtual void outputLevelsChanged(float, float); + virtual void monitoringLevelsChanged(float, float); virtual void layerRemoved(Layer *); virtual void layerInAView(Layer *, bool); virtual void mainModelChanged(WaveFileModel *); + virtual void mainModelGainChanged(float); + virtual void mainModelPanChanged(float); virtual void modelAdded(Model *); virtual void modelAboutToBeDeleted(Model *); @@ -146,18 +155,22 @@ virtual void midiEventsAvailable(); virtual void playStatusChanged(bool); + virtual void betaReleaseWarning(); + virtual void pluginPopulationWarning(); + virtual void saveSessionAsTemplate(); virtual void manageSavedTemplates(); virtual void website(); virtual void help(); virtual void about(); + virtual void whatsNew(); virtual void keyReference(); virtual void newerVersionAvailable(QString); protected: Overview *m_overview; - Fader *m_fader; + LevelPanToolButton *m_mainLevelPan; AudioDial *m_playSpeed; WaveformLayer *m_panLayer; @@ -187,6 +200,7 @@ QAction *m_ffwdSimilarAction; QAction *m_ffwdEndAction; QAction *m_playAction; + QAction *m_recordAction; QAction *m_playSelectionAction; QAction *m_playLoopAction; QAction *m_manageTemplatesAction; @@ -217,6 +231,7 @@ Surveyer *m_surveyer; VersionTester *m_versionTester; + QString m_newerVersionIs; struct LayerConfiguration { LayerConfiguration(LayerFactory::LayerType _layer diff -r a0a37ed3c07a -r f73a4e8c7040 main/OSCHandler.cpp --- a/main/OSCHandler.cpp Tue Jan 10 16:10:33 2017 +0000 +++ b/main/OSCHandler.cpp Tue Jan 10 16:21:32 2017 +0000 @@ -22,14 +22,16 @@ #include "view/PaneStack.h" #include "data/model/WaveFileModel.h" #include "widgets/CommandHistory.h" -#include "audioio/AudioCallbackPlaySource.h" -#include "audioio/AudioCallbackPlayTarget.h" +#include "audio/AudioCallbackPlaySource.h" #include "framework/Document.h" #include "data/fileio/WavFileWriter.h" #include "transform/TransformFactory.h" -#include "widgets/Fader.h" +#include "widgets/LevelPanWidget.h" +#include "widgets/LevelPanToolButton.h" #include "widgets/AudioDial.h" +#include + #include void @@ -341,7 +343,7 @@ if (property == "gain") { if (value < 0.0) value = 0.0; - m_fader->setValue(value); + m_mainLevelPan->setLevel(value); if (m_playTarget) m_playTarget->setOutputGain(value); } else if (property == "speedup") { m_playSpeed->setMappedValue(value); diff -r a0a37ed3c07a -r f73a4e8c7040 main/PreferencesDialog.cpp --- a/main/PreferencesDialog.cpp Tue Jan 10 16:10:33 2017 +0000 +++ b/main/PreferencesDialog.cpp Tue Jan 10 16:21:32 2017 +0000 @@ -38,15 +38,26 @@ #include "widgets/WindowTypeSelector.h" #include "widgets/IconLoader.h" +#include "widgets/ColourMapComboBox.h" +#include "widgets/ColourComboBox.h" #include "base/Preferences.h" -#include "audioio/AudioTargetFactory.h" #include "base/ResourceFinder.h" +#include "layer/ColourMapper.h" +#include "layer/ColourDatabase.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_audioDeviceChanged(false), + m_coloursChanged(false), m_changesOnRestart(false) { setWindowTitle(tr("Sonic Visualiser: Application Preferences")); @@ -78,6 +89,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, @@ -122,6 +140,50 @@ 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()); + m_overviewColour = ColourDatabase::getInstance()->getColour(tr("Green")); + if (settings.contains("overview-colour")) { + QString qcolorName = + settings.value("overview-colour", m_overviewColour.name()) + .toString(); + m_overviewColour.setNamedColor(qcolorName); + cerr << "loaded colour " << m_overviewColour.name() << " from settings" << endl; + } + settings.endGroup(); + + ColourMapComboBox *spectrogramGColour = new ColourMapComboBox(true); + spectrogramGColour->setCurrentIndex(m_spectrogramGColour); + + ColourMapComboBox *spectrogramMColour = new ColourMapComboBox(true); + spectrogramMColour->setCurrentIndex(m_spectrogramMColour); + + ColourMapComboBox *colour3DColour = new ColourMapComboBox(true); + colour3DColour->setCurrentIndex(m_colour3DColour); + + // can't have "add new colour", as it gets saved in the session not in prefs + ColourComboBox *overviewColour = new ColourComboBox(false); + int overviewColourIndex = + ColourDatabase::getInstance()->getColourIndex(m_overviewColour); + cerr << "index = " << overviewColourIndex << " for colour " << m_overviewColour.name() << endl; + if (overviewColourIndex >= 0) { + overviewColour->setCurrentIndex(overviewColourIndex); + } + + connect(spectrogramGColour, SIGNAL(colourMapChanged(int)), + this, SLOT(spectrogramGColourChanged(int))); + connect(spectrogramMColour, SIGNAL(colourMapChanged(int)), + this, SLOT(spectrogramMColourChanged(int))); + connect(colour3DColour, SIGNAL(colourMapChanged(int)), + this, SLOT(colour3DColourChanged(int))); + connect(overviewColour, SIGNAL(colourChanged(int)), + this, SLOT(overviewColourChanged(int))); m_tuningFrequency = prefs->getTuningFrequency(); @@ -149,38 +211,47 @@ connect(octaveSystem, SIGNAL(currentIndexChanged(int)), this, SLOT(octaveSystemChanged(int))); - QComboBox *audioDevice = new QComboBox; - std::vector devices = - AudioTargetFactory::getInstance()->getCallbackTargetNames(); + settings.beginGroup("Preferences"); + + 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 implementationNames = + breakfastquay::AudioFactory::getImplementationNames(); + + QString implementationName = settings.value("audio-target", "").toString(); + if (implementationName == "auto") implementationName = ""; + if (implementationName == "" && implementationNames.size() == 1) { + // We won't be showing the implementations menu in this case + implementationName = implementationNames[0].c_str(); + } + + audioImplementation->addItem(tr("(auto)")); + m_audioImplementation = 0; + + for (int i = 0; in_range_for(implementationNames, i); ++i) { + audioImplementation->addItem + (breakfastquay::AudioFactory::getImplementationDescription + (implementationNames[i]).c_str()); + if (implementationName.toStdString() == implementationNames[i]) { + audioImplementation->setCurrentIndex(i+1); + m_audioImplementation = i+1; + } + } - QSettings settings; - settings.beginGroup("Preferences"); - QString targetName = settings.value("audio-target", "").toString(); 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_audioDeviceChanged = false; // the rebuild will have changed this QCheckBox *resampleOnLoad = new QCheckBox; m_resampleOnLoad = prefs->getResampleOnLoad(); @@ -189,6 +260,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; @@ -207,7 +284,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); @@ -223,6 +300,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; @@ -298,49 +384,11 @@ hms->setCheckState(m_showHMS ? Qt::Checked : Qt::Unchecked); connect(hms, SIGNAL(stateChanged(int)), this, SLOT(showHMSChanged(int))); - - // General tab - QFrame *frame = new QFrame; - - QGridLayout *subgrid = new QGridLayout; - frame->setLayout(subgrid); - + QFrame *frame = 0; + QGridLayout *subgrid = 0; int row = 0; - subgrid->addWidget(new QLabel(tr("%1:").arg(tr("User interface language"))), - row, 0); - subgrid->addWidget(locale, row++, 1, 1, 1); - - subgrid->addWidget(new QLabel(tr("%1:").arg(tr("Allow network usage"))), - row, 0); - subgrid->addWidget(networkPermish, row++, 1, 1, 1); - - subgrid->addWidget(new QLabel(tr("%1:").arg(prefs->getPropertyLabel - ("Temporary Directory Root"))), - row, 0); - subgrid->addWidget(m_tempDirRootEdit, row, 1, 1, 1); - subgrid->addWidget(tempDirButton, row, 2, 1, 1); - row++; - - subgrid->addWidget(new QLabel(tr("%1:").arg(prefs->getPropertyLabel - ("Resample On Load"))), - 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 - ("Resample Quality"))), - row, 0); - subgrid->addWidget(resampleQuality, row++, 1, 1, 2); - - subgrid->setRowStretch(row, 10); - - m_tabOrdering[GeneralTab] = m_tabs->count(); - m_tabs->addTab(frame, tr("&General")); - // Appearance tab frame = new QFrame; @@ -348,17 +396,35 @@ frame->setLayout(subgrid); row = 0; - subgrid->addWidget(new QLabel(tr("%1:").arg(prefs->getPropertyLabel - ("Show Splash Screen"))), - row, 0); - subgrid->addWidget(showSplash, row++, 1, 1, 1); +#ifdef Q_OS_MAC + if (devicePixelRatio() > 1) { + subgrid->addWidget(new QLabel(tr("Draw layers at Retina resolution:")), row, 0); + subgrid->addWidget(retina, row++, 1, 1, 1); + } +#endif subgrid->addWidget(new QLabel(tr("%1:").arg(prefs->getPropertyLabel ("Property Box Layout"))), row, 0); subgrid->addWidget(propertyLayout, row++, 1, 1, 2); -#ifndef Q_OS_MAC + subgrid->addWidget(new QLabel(tr("Default spectrogram colour:")), + row, 0); + subgrid->addWidget(spectrogramGColour, row++, 1, 1, 2); + + subgrid->addWidget(new QLabel(tr("Default melodic spectrogram colour:")), + row, 0); + subgrid->addWidget(spectrogramMColour, row++, 1, 1, 2); + + subgrid->addWidget(new QLabel(tr("Default colour 3D plot colour:")), + row, 0); + subgrid->addWidget(colour3DColour, row++, 1, 1, 2); + + subgrid->addWidget(new QLabel(tr("Overview waveform colour:")), + row, 0); + subgrid->addWidget(overviewColour, row++, 1, 1, 2); + +#ifdef NOT_DEFINED // see earlier subgrid->addWidget(new QLabel(tr("%1:").arg(prefs->getPropertyLabel ("Background Mode"))), row, 0); @@ -416,8 +482,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); @@ -431,13 +502,17 @@ frame->setLayout(subgrid); row = 0; - subgrid->addWidget(new QLabel(tr("Default session template for audio files:")), row++, 0); + subgrid->addWidget(new QLabel(tr("Default session template when loading audio files:")), row++, 0); QListWidget *lw = new QListWidget(); subgrid->addWidget(lw, row, 0); subgrid->setRowStretch(row, 10); row++; + subgrid->addWidget(new QLabel(tr("(Use \"%1\" in the File menu to add to these.)") + .arg(tr("Export Session as Template..."))), + row++, 0); + settings.beginGroup("MainWindow"); m_currentTemplate = settings.value("sessiontemplate", "").toString(); settings.endGroup(); @@ -450,7 +525,7 @@ QStringList templates = ResourceFinder().getResourceFiles("templates", "svt"); - std::set byName; + set byName; foreach (QString t, templates) { byName.insert(QFileInfo(t).baseName()); } @@ -469,6 +544,71 @@ m_tabOrdering[TemplateTab] = m_tabs->count(); m_tabs->addTab(frame, tr("Session &Template")); + // Audio IO tab + + frame = new QFrame; + subgrid = new QGridLayout; + frame->setLayout(subgrid); + row = 0; + + if (implementationNames.size() > 1) { + 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->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 On Load"))), + row, 0); + subgrid->addWidget(resampleOnLoad, row++, 1, 1, 1); + + subgrid->setRowStretch(row, 10); + + m_tabOrdering[AudioIOTab] = m_tabs->count(); + m_tabs->addTab(frame, tr("A&udio I/O")); + + // General tab + + frame = new QFrame; + subgrid = new QGridLayout; + frame->setLayout(subgrid); + row = 0; + + subgrid->addWidget(new QLabel(tr("%1:").arg(tr("User interface language"))), + row, 0); + subgrid->addWidget(locale, row++, 1, 1, 1); + + subgrid->addWidget(new QLabel(tr("%1:").arg(tr("Allow network usage"))), + row, 0); + subgrid->addWidget(networkPermish, row++, 1, 1, 1); + + subgrid->addWidget(new QLabel(tr("%1:").arg(prefs->getPropertyLabel + ("Show Splash Screen"))), + row, 0); + subgrid->addWidget(showSplash, row++, 1, 1, 1); + + subgrid->addWidget(new QLabel(tr("%1:").arg(prefs->getPropertyLabel + ("Temporary Directory Root"))), + row, 0); + subgrid->addWidget(m_tempDirRootEdit, row, 1, 1, 1); + subgrid->addWidget(tempDirButton, row, 2, 1, 1); + row++; + + subgrid->setRowStretch(row, 10); + + m_tabOrdering[GeneralTab] = m_tabs->count(); + m_tabs->addTab(frame, tr("&Other")); + QDialogButtonBox *bb = new QDialogButtonBox(Qt::Horizontal); grid->addWidget(bb, 1, 0); @@ -490,6 +630,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]; + } + + 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->clear(); + 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->clear(); + 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)) { @@ -519,6 +710,38 @@ } void +PreferencesDialog::spectrogramGColourChanged(int colour) +{ + m_spectrogramGColour = colour; + m_coloursChanged = true; + m_applyButton->setEnabled(true); +} + +void +PreferencesDialog::spectrogramMColourChanged(int colour) +{ + m_spectrogramMColour = colour; + m_coloursChanged = true; + m_applyButton->setEnabled(true); +} + +void +PreferencesDialog::colour3DColourChanged(int colour) +{ + m_colour3DColour = colour; + m_coloursChanged = true; + m_applyButton->setEnabled(true); +} + +void +PreferencesDialog::overviewColourChanged(int colour) +{ + m_overviewColour = ColourDatabase::getInstance()->getColour(colour); + m_coloursChanged = true; + m_applyButton->setEnabled(true); +} + +void PreferencesDialog::propertyLayoutChanged(int layout) { m_propertyLayout = layout; @@ -533,18 +756,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_audioDeviceChanged = 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_audioDeviceChanged = true; + } +} + +void +PreferencesDialog::audioRecordDeviceChanged(int s) +{ + if (m_audioRecordDevice != s) { + m_audioRecordDevice = s; + m_applyButton->setEnabled(true); + m_audioDeviceChanged = true; + } } void @@ -556,6 +795,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); @@ -564,6 +818,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); @@ -660,8 +922,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)); @@ -671,15 +934,54 @@ 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 > int(names.size())) { + m_audioImplementation = 0; + } + 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 > int(names.size())) { + m_audioPlaybackDevice = 0; + } + 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 > int(names.size())) { + m_audioRecordDevice = 0; + } + 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.setValue("overview-colour", m_overviewColour.name()); settings.endGroup(); settings.beginGroup("MainWindow"); @@ -693,6 +995,16 @@ tr("Restart required

    One or more of the application preferences you have changed may not take full effect until Sonic Visualiser is restarted.

    Please exit and restart the application now if you want these changes to take effect immediately.

    ")); m_changesOnRestart = false; } + + if (m_audioDeviceChanged) { + emit audioDeviceChanged(); + m_audioDeviceChanged = false; + } + + if (m_coloursChanged) { + emit coloursChanged(); + m_coloursChanged = false; + } } void diff -r a0a37ed3c07a -r f73a4e8c7040 main/PreferencesDialog.h --- a/main/PreferencesDialog.h Tue Jan 10 16:10:33 2017 +0000 +++ b/main/PreferencesDialog.h Tue Jan 10 16:21:32 2017 +0000 @@ -18,6 +18,7 @@ #include #include +#include #include "base/Window.h" @@ -25,6 +26,7 @@ class QPushButton; class QLineEdit; class QTabWidget; +class QComboBox; class PreferencesDialog : public QDialog { @@ -36,12 +38,17 @@ enum Tab { GeneralTab, + AudioIOTab, AppearanceTab, AnalysisTab, TemplateTab }; void switchToTab(Tab tab); +signals: + void audioDeviceChanged(); + void coloursChanged(); + public slots: void applicationClosing(bool quickly); @@ -49,11 +56,18 @@ 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 overviewColourChanged(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 +78,7 @@ void defaultTemplateChanged(int); void localeChanged(int); void networkPermissionChanged(int state); + void retinaChanged(int state); void tempDirButtonClicked(); @@ -80,6 +95,10 @@ QLineEdit *m_tempDirRootEdit; + QComboBox *m_audioPlaybackDeviceCombo; + QComboBox *m_audioRecordDeviceCombo; + void rebuildDeviceCombos(); + QString m_currentTemplate; QStringList m_templates; @@ -89,12 +108,20 @@ WindowType m_windowType; int m_spectrogramSmoothing; int m_spectrogramXSmoothing; + int m_spectrogramGColour; + int m_spectrogramMColour; + int m_colour3DColour; + QColor m_overviewColour; 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; @@ -103,6 +130,8 @@ int m_viewFontSize; bool m_showSplash; + bool m_audioDeviceChanged; + bool m_coloursChanged; bool m_changesOnRestart; }; diff -r a0a37ed3c07a -r f73a4e8c7040 main/SVSplash.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main/SVSplash.cpp Tue Jan 10 16:21:32 2017 +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 a0a37ed3c07a -r f73a4e8c7040 main/SVSplash.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main/SVSplash.h Tue Jan 10 16:21:32 2017 +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 a0a37ed3c07a -r f73a4e8c7040 main/main.cpp --- a/main/main.cpp Tue Jan 10 16:10:33 2017 +0000 +++ b/main/main.cpp Tue Jan 10 16:21:32 2017 +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,22 @@ 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")) { + 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(); @@ -310,9 +308,11 @@ QApplication::setWindowIcon(icon); QString language = QLocale::system().name(); + SVDEBUG << "System language is: " << language << endl; settings.beginGroup("Preferences"); - language = settings.value("locale", language).toString(); + QString prefLanguage = settings.value("locale", language).toString(); + if (prefLanguage != QString()) language = prefLanguage; settings.endGroup(); QTranslator qtTranslator; @@ -342,15 +342,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 +427,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 +490,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 a0a37ed3c07a -r f73a4e8c7040 misc/update-i18n.sh --- a/misc/update-i18n.sh Tue Jan 10 16:10:33 2017 +0000 +++ b/misc/update-i18n.sh Tue Jan 10 16:21:32 2017 +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 a0a37ed3c07a -r f73a4e8c7040 noconfig.pri --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/noconfig.pri Tue Jan 10 16:21:32 2017 +0000 @@ -0,0 +1,136 @@ + +CONFIG += release + +#CONFIG -= release +#CONFIG += debug + +DEFINES += NDEBUG BUILD_RELEASE +DEFINES += NO_TIMING NO_HIT_COUNTS + +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 a0a37ed3c07a -r f73a4e8c7040 platform-dataquay.pri --- a/platform-dataquay.pri Tue Jan 10 16:10:33 2017 +0000 +++ b/platform-dataquay.pri Tue Jan 10 16:21:32 2017 +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 a0a37ed3c07a -r f73a4e8c7040 server.pro --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/server.pro Tue Jan 10 16:21:32 2017 +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 a0a37ed3c07a -r f73a4e8c7040 sonic-visualiser.pro --- a/sonic-visualiser.pro Tue Jan 10 16:10:33 2017 +0000 +++ b/sonic-visualiser.pro Tue Jan 10 16:21:32 2017 +0000 @@ -1,17 +1,27 @@ + TEMPLATE = subdirs -SUBDIRS = 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 -} +# We build the tests on every platform, though at the time of +# writing they are only automatically run on non-Windows platforms +# (because of the difficulty of getting them running nicely in the +# IDE without causing great confusion if a test fails). +SUBDIRS += \ + sub_test_svcore_base \ + sub_test_svcore_data_fileio \ + sub_test_svcore_data_model +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 a0a37ed3c07a -r f73a4e8c7040 sonic-visualiser.qrc --- a/sonic-visualiser.qrc Tue Jan 10 16:10:33 2017 +0000 +++ b/sonic-visualiser.qrc Tue Jan 10 16:21:32 2017 +0000 @@ -1,9 +1,68 @@ - + + icons/scalable/align.svg + icons/scalable/colour3d.svg + icons/scalable/cross.svg + icons/scalable/dataedit.svg + icons/scalable/datadelete.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/normalise.svg + icons/scalable/normalise-columns.svg + icons/scalable/pause.svg + icons/scalable/playloop.svg + icons/scalable/playpause.svg + icons/scalable/playselection.svg + icons/scalable/playfollow.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/pane.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/zoom-reset.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/scalable/faders.svg + icons/scalable/help.svg icons/waveform.png icons/spectrum.png icons/spectrogram.png - icons/timeruler.png icons/pane.png icons/instants.png icons/notes.png @@ -20,9 +79,7 @@ icons/playselection.png icons/playselection-on.png icons/playloop.png - icons/playloop-on.png icons/playfollow.png - icons/playfollow-on.png icons/solo.png icons/solo-on.png icons/align.png @@ -44,10 +101,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 @@ -123,5 +176,10 @@ i18n/sonic-visualiser_en_US.qm i18n/sonic-visualiser_cs_CZ.qm i18n/tips_en.xml + README + README.OSC + CHANGELOG + COPYING + CITATION diff -r a0a37ed3c07a -r f73a4e8c7040 sv.pro --- a/sv.pro Tue Jan 10 16:10:33 2017 +0000 +++ b/sv.pro Tue Jan 10 16:21:32 2017 +0000 @@ -1,52 +1,33 @@ 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_2_0 - - 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 += . svcore svgui svapp -INCLUDEPATH += . svcore svgui svapp +linux* { + sv_bins.path = /usr/local/bin/ + sv_bins.files = sonic-visualiser piper-vamp-simple-server checker/vamp-plugin-load-checker + INSTALLS += sv_bins +} -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,46 +35,33 @@ ICON = icons/sv-macicon.icns RC_FILE = icons/sv.rc -contains(DEFINES, BUILD_STATIC):LIBS -= -ljack - -MY_LIBS = -Lsvapp -Lsvgui -Lsvcore -Ldataquay -lsvapp -lsvgui -lsvcore -ldataquay - -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 a0a37ed3c07a -r f73a4e8c7040 test-svcore-base.pro --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-svcore-base.pro Tue Jan 10 16:21:32 2017 +0000 @@ -0,0 +1,33 @@ + +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) } + +!win32* { + QMAKE_POST_LINK = ./$${TARGET} +} diff -r a0a37ed3c07a -r f73a4e8c7040 test-svcore-data-fileio.pro --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-svcore-data-fileio.pro Tue Jan 10 16:21:32 2017 +0000 @@ -0,0 +1,33 @@ + +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) } + +!win32* { + QMAKE_POST_LINK = ./$${TARGET} +} diff -r a0a37ed3c07a -r f73a4e8c7040 test-svcore-data-model.pro --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test-svcore-data-model.pro Tue Jan 10 16:21:32 2017 +0000 @@ -0,0 +1,33 @@ + +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) } + +!win32* { + QMAKE_POST_LINK = ./$${TARGET} +} diff -r a0a37ed3c07a -r f73a4e8c7040 vamp-plugin-sdk-files.pri --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vamp-plugin-sdk-files.pri Tue Jan 10 16:21:32 2017 +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 a0a37ed3c07a -r f73a4e8c7040 version.h --- a/version.h Tue Jan 10 16:10:33 2017 +0000 +++ b/version.h Tue Jan 10 16:21:32 2017 +0000 @@ -1,1 +1,1 @@ -#define SV_VERSION "2.5" +#define SV_VERSION "3.0-beta1"