# HG changeset patch # User Chris Cannam # Date 1386241071 0 # Node ID bfd68cc71a251eba0ecf8c3c630f72c746f223e6 # Parent dabe6e994a9c6315a088a4faa6e49ec48f2f4284# Parent e6faa02020f07ef9c31248c691a5fb1b75063ab0 Merge from default branch, fix build diff -r dabe6e994a9c -r bfd68cc71a25 configure --- a/configure Thu Dec 05 10:11:17 2013 +0000 +++ b/configure Thu Dec 05 10:57:51 2013 +0000 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for Sonic Visualiser 2.2. +# Generated by GNU Autoconf 2.69 for Sonic Visualiser 2.3-imaf. # # Report bugs to . # @@ -580,8 +580,8 @@ # Identity of this package. PACKAGE_NAME='Sonic Visualiser' PACKAGE_TARNAME='sonic-visualiser' -PACKAGE_VERSION='2.2' -PACKAGE_STRING='Sonic Visualiser 2.2' +PACKAGE_VERSION='2.3-imaf' +PACKAGE_STRING='Sonic Visualiser 2.3-imaf' PACKAGE_BUGREPORT='cannam@all-day-breakfast.com' PACKAGE_URL='' @@ -1333,7 +1333,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures Sonic Visualiser 2.2 to adapt to many kinds of systems. +\`configure' configures Sonic Visualiser 2.3-imaf to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1395,7 +1395,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of Sonic Visualiser 2.2:";; + short | recursive ) echo "Configuration of Sonic Visualiser 2.3-imaf:";; esac cat <<\_ACEOF @@ -1546,7 +1546,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -Sonic Visualiser configure 2.2 +Sonic Visualiser configure 2.3-imaf generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -1886,7 +1886,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by Sonic Visualiser $as_me 2.2, which was +It was created by Sonic Visualiser $as_me 2.3-imaf, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -7902,7 +7902,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by Sonic Visualiser $as_me 2.2, which was +This file was extended by Sonic Visualiser $as_me 2.3-imaf, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -7955,7 +7955,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -Sonic Visualiser config.status 2.2 +Sonic Visualiser config.status 2.3-imaf configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -r dabe6e994a9c -r bfd68cc71a25 configure.ac --- a/configure.ac Thu Dec 05 10:11:17 2013 +0000 +++ b/configure.ac Thu Dec 05 10:57:51 2013 +0000 @@ -1,5 +1,5 @@ -AC_INIT([Sonic Visualiser], [2.2], cannam@all-day-breakfast.com) +AC_INIT([Sonic Visualiser], [2.3-imaf], cannam@all-day-breakfast.com) AC_CONFIG_SRCDIR(main/main.cpp) diff -r dabe6e994a9c -r bfd68cc71a25 i18n/sonic-visualiser_cs_CZ.qm Binary file i18n/sonic-visualiser_cs_CZ.qm has changed diff -r dabe6e994a9c -r bfd68cc71a25 i18n/sonic-visualiser_cs_CZ.ts --- a/i18n/sonic-visualiser_cs_CZ.ts Thu Dec 05 10:11:17 2013 +0000 +++ b/i18n/sonic-visualiser_cs_CZ.ts Thu Dec 05 10:57:51 2013 +0000 @@ -2547,7 +2547,7 @@ Export the selected regions into a single audio file - Vyvést vybrané oblasti do jednoho zvukového souboru + Vyvést vybrané oblasti do jednoho zvukového souboru <b>Wrong sample rate</b><p>The sample rate of this audio file (%1 Hz) does not match @@ -3273,6 +3273,22 @@ <br>With Dataquay Qt/RDF library &copy; Chris Cannam <br>Knihovna Dataquay Qt/RDF &copy; Chris Cannam + + &Export Audio Data... + + + + Export audio from selection into a data file + + + + Export the selected regions into a single file + + + + Export the whole file + + MainWindowBase @@ -4458,6 +4474,30 @@ Playback audio device: Zvukové zařízení pro přehrávání: + + Follow system locale + + + + Russian + + + + British English + + + + American English + + + + Czech + + + + User interface language + + ProgressDialog diff -r dabe6e994a9c -r bfd68cc71a25 i18n/sonic-visualiser_en_GB.qm Binary file i18n/sonic-visualiser_en_GB.qm has changed diff -r dabe6e994a9c -r bfd68cc71a25 i18n/sonic-visualiser_en_GB.ts --- a/i18n/sonic-visualiser_en_GB.ts Thu Dec 05 10:11:17 2013 +0000 +++ b/i18n/sonic-visualiser_en_GB.ts Thu Dec 05 10:57:51 2013 +0000 @@ -327,12 +327,12 @@ Normalize Columns - + Normalise Columns Normalize Visible Area - + Normalise Visible Area @@ -1602,7 +1602,7 @@ - + Green @@ -1634,7 +1634,7 @@ - + Bright Green @@ -1655,14 +1655,14 @@ - - + + &Layer - + &Transform @@ -1742,37 +1742,37 @@ - + 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 @@ -1792,1595 +1792,1599 @@ - + &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 - + 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 - + + + + Rewind + + + + + PgUp + + + + + Rewind to the previous time instant or time ruler notch + + + + + Rewind to Similar Point + + + + + Shift+PgUp + + + + + Rewind to the previous similarly valued time instant + + + + + Play / Pause + + + + + Space + + + + + Start or stop playback from the current position + + + + + + Fast Forward + + + + + PgDown + + + + + Fast-forward to the next time instant or time ruler notch + + + + + Fast Forward to Similar Point + + + + + Shift+PgDown + + + + + Fast-forward to the next similarly valued time instant + + + + + Fast Forward to End + + + + + End + + + + + Fast-forward to the end + + + + + Play Mode Toolbar + + + + + Constrain Playback to Selection + + + + + s + + + + + Constrain playback to the selected regions + + + + + Loop Playback + + + + + l + + + + + Loop playback + + + + + Solo Current Pane + + + + + o + + + + + Solo the current pane during playback + + + + + Align File Timelines + + + + + Treat multiple audio files as versions of the same work, and align their timelines + + + + + Speed Up + + + + + Ctrl+PgUp + + + + + Time-stretch playback to speed it up without changing pitch + + + + + Slow Down + + + + + Ctrl+PgDown + + + + + Time-stretch playback to slow it down without changing pitch + + + + + Restore Normal Speed + + + + + Ctrl+Home + + + + + Restore non-time-stretched playback + + + + + Edit Toolbar + + + + + Tool Selection + + + + + Tools Toolbar + + + + + + Navigate + + + + + 1 + + + + + Select + + + + + 2 + + + + + Select ranges + + + + + Edit + + + + + 3 + + + + + Edit items in layer + + + + + Draw + + + + + 4 + + + + + Draw new items in layer + + + + + Erase + + + + + 5 + + + + + Erase items from layer + + + + + Measure + + + + + 6 + + + + + Make measurements in layer + + + + + &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 - - - - - PgUp - - - - - Rewind to the previous time instant or time ruler notch - - - - - Rewind to Similar Point - - - - - Shift+PgUp - - - - - Rewind to the previous similarly valued time instant - - - - - Play / Pause - - - - - Space - - - - - Start or stop playback from the current position - - - - - - Fast Forward - - - - - PgDown - - - - - Fast-forward to the next time instant or time ruler notch - - - - - Fast Forward to Similar Point - - - - - Shift+PgDown - - - - - Fast-forward to the next similarly valued time instant - - - - - Fast Forward to End - - - - - End - - - - - Fast-forward to the end - - - - - Play Mode Toolbar - - - - - Constrain Playback to Selection - - - - - s - - - - - Constrain playback to the selected regions - - - - - Loop Playback - - - - - l - - - - - Loop playback - - - - - Solo Current Pane - - - - - o - - - - - Solo the current pane during playback - - - - - Align File Timelines - - - - - Treat multiple audio files as versions of the same work, and align their timelines - - - - - Speed Up - - - - - Ctrl+PgUp - - - - - Time-stretch playback to speed it up without changing pitch - - - - - Slow Down - - - - - Ctrl+PgDown - - - - - Time-stretch playback to slow it down without changing pitch - - - - - Restore Normal Speed - - - - - Ctrl+Home - - - - - Restore non-time-stretched playback - - - - - Edit Toolbar - - - - - Tool Selection - - - - - Tools Toolbar - - - - - - Navigate - - - - - 1 - - - - - Select - - - - - 2 - - - - - Select ranges - - - - - Edit - - - - - 3 - - - - - Edit items in layer - - - - - Draw - - - - - 4 - - - - - Draw new items in layer - - - - - Erase - - - - - 5 - - - - - Erase items from layer - - - - - Measure - - - - - 6 - - - - - Make measurements in layer - - - - - &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 - + 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 a single audio file - - - - + 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 @@ -3425,528 +3429,538 @@ - + 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" - + 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. - + 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 @@ -5374,86 +5388,117 @@ - - - - - - - + + Follow system locale + + + + + Russian + + + + + British English + + + + + American English + + + + + Czech + + + + + + - + + + + + + %1: - + + User interface language + + + + Playback audio device: - + &General - + &Appearance - + Anal&ysis - + Default session template for audio files: - + Standard Waveform - + Session &Template - + OK - + Cancel - + Select a directory to create cache subdirectory in - + Preferences - + <b>Restart required</b><p>One or more of the application preferences you have changed may not take full effect until Sonic Visualiser is restarted.</p><p>Please exit and restart the application now if you want these changes to take effect immediately.</p> - + Preferences Changed - + Some preferences have been changed but not applied. Apply them before closing? @@ -5674,18 +5719,18 @@ 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 @@ -6038,7 +6083,7 @@ Normalize - + Normalise @@ -6276,12 +6321,12 @@ Normalize Columns - + Normalise Columns Normalize Visible Area - + Normalise Visible Area @@ -7717,7 +7762,7 @@ Normalize Visible Area - + Normalise Visible Area diff -r dabe6e994a9c -r bfd68cc71a25 i18n/sonic-visualiser_en_US.qm Binary file i18n/sonic-visualiser_en_US.qm has changed diff -r dabe6e994a9c -r bfd68cc71a25 i18n/sonic-visualiser_en_US.ts --- a/i18n/sonic-visualiser_en_US.ts Thu Dec 05 10:11:17 2013 +0000 +++ b/i18n/sonic-visualiser_en_US.ts Thu Dec 05 10:57:51 2013 +0000 @@ -316,7 +316,7 @@ Colour - + Color @@ -667,7 +667,7 @@ Failed to initialise feature extraction plugin "%1" - + Failed to initialize feature extraction plugin "%1" @@ -1379,7 +1379,7 @@ Colour 3D Plot - + Color 3D Plot @@ -1602,7 +1602,7 @@ - + Green @@ -1634,7 +1634,7 @@ - + Bright Green @@ -1655,14 +1655,14 @@ - - + + &Layer - + &Transform @@ -1742,37 +1742,37 @@ - + 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 @@ -1792,479 +1792,479 @@ - + &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 +2273,12 @@ Hide center indicator, frame times, layer names and scale - + Show &Minimal Overlays - + 9 @@ -2287,7 +2287,7 @@ Show center indicator only - + 8 @@ -2296,1103 +2296,1107 @@ Show center indicator, frame times and scale - + 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 - + + + + Rewind + + + + + PgUp + + + + + Rewind to the previous time instant or time ruler notch + + + + + Rewind to Similar Point + + + + + Shift+PgUp + + + + + Rewind to the previous similarly valued time instant + + + + + Play / Pause + + + + + Space + + + + + Start or stop playback from the current position + + + + + + Fast Forward + + + + + PgDown + + + + + Fast-forward to the next time instant or time ruler notch + + + + + Fast Forward to Similar Point + + + + + Shift+PgDown + + + + + Fast-forward to the next similarly valued time instant + + + + + Fast Forward to End + + + + + End + + + + + Fast-forward to the end + + + + + Play Mode Toolbar + + + + + Constrain Playback to Selection + + + + + s + + + + + Constrain playback to the selected regions + + + + + Loop Playback + + + + + l + + + + + Loop playback + + + + + Solo Current Pane + + + + + o + + + + + Solo the current pane during playback + + + + + Align File Timelines + + + + + Treat multiple audio files as versions of the same work, and align their timelines + + + + + Speed Up + + + + + Ctrl+PgUp + + + + + Time-stretch playback to speed it up without changing pitch + + + + + Slow Down + + + + + Ctrl+PgDown + + + + + Time-stretch playback to slow it down without changing pitch + + + + + Restore Normal Speed + + + + + Ctrl+Home + + + + + Restore non-time-stretched playback + + + + + Edit Toolbar + + + + + Tool Selection + + + + + Tools Toolbar + + + + + + Navigate + + + + + 1 + + + + + Select + + + + + 2 + + + + + Select ranges + + + + + Edit + + + + + 3 + + + + + Edit items in layer + + + + + Draw + + + + + 4 + + + + + Draw new items in layer + + + + + Erase + + + + + 5 + + + + + Erase items from layer + + + + + Measure + + + + + 6 + + + + + Make measurements in layer + + + + + &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 - - - - - PgUp - - - - - Rewind to the previous time instant or time ruler notch - - - - - Rewind to Similar Point - - - - - Shift+PgUp - - - - - Rewind to the previous similarly valued time instant - - - - - Play / Pause - - - - - Space - - - - - Start or stop playback from the current position - - - - - - Fast Forward - - - - - PgDown - - - - - Fast-forward to the next time instant or time ruler notch - - - - - Fast Forward to Similar Point - - - - - Shift+PgDown - - - - - Fast-forward to the next similarly valued time instant - - - - - Fast Forward to End - - - - - End - - - - - Fast-forward to the end - - - - - Play Mode Toolbar - - - - - Constrain Playback to Selection - - - - - s - - - - - Constrain playback to the selected regions - - - - - Loop Playback - - - - - l - - - - - Loop playback - - - - - Solo Current Pane - - - - - o - - - - - Solo the current pane during playback - - - - - Align File Timelines - - - - - Treat multiple audio files as versions of the same work, and align their timelines - - - - - Speed Up - - - - - Ctrl+PgUp - - - - - Time-stretch playback to speed it up without changing pitch - - - - - Slow Down - - - - - Ctrl+PgDown - - - - - Time-stretch playback to slow it down without changing pitch - - - - - Restore Normal Speed - - - - - Ctrl+Home - - - - - Restore non-time-stretched playback - - - - - Edit Toolbar - - - - - Tool Selection - - - - - Tools Toolbar - - - - - - Navigate - - - - - 1 - - - - - Select - - - - - 2 - - - - - Select ranges - - - - - Edit - - - - - 3 - - - - - Edit items in layer - - - - - Draw - - - - - 4 - - - - - Draw new items in layer - - - - - Erase - - - - - 5 - - - - - Erase items from layer - - - - - Measure - - - - - 6 - - - - - Make measurements in layer - - - - - &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 - + 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 a single audio file - - - - + 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 @@ -3437,528 +3441,538 @@ - + 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" - + 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. - + 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 @@ -5203,7 +5217,7 @@ Background colour preference - + Background color preference @@ -5386,86 +5400,117 @@ - - - - - - - + + Follow system locale + + + + + Russian + + + + + British English + + + + + American English + + + + + Czech + + + + + + - + + + + + + %1: - + + User interface language + + + + Playback audio device: - + &General - + &Appearance - + Anal&ysis - + Default session template for audio files: - + Standard Waveform - + Session &Template - + OK - + Cancel - + Select a directory to create cache subdirectory in - + Preferences - + <b>Restart required</b><p>One or more of the application preferences you have changed may not take full effect until Sonic Visualiser is restarted.</p><p>Please exit and restart the application now if you want these changes to take effect immediately.</p> - + Preferences Changed - + Some preferences have been changed but not applied. Apply them before closing? @@ -5510,22 +5555,22 @@ Add New Colour... - + Add New Color... Name New Colour - + Name New Color Enter a name for the new colour: - + Enter a name for the new color: Prefer black background for this colour - + Prefer black background for this color @@ -5659,18 +5704,18 @@ 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 @@ -5947,7 +5992,7 @@ Colour - + Color @@ -6106,7 +6151,7 @@ Colours - + Colors @@ -6241,12 +6286,12 @@ Colour - + Color Colour Scale - + Color Scale @@ -6286,7 +6331,7 @@ Colour Rotation - + Color Rotation diff -r dabe6e994a9c -r bfd68cc71a25 i18n/sonic-visualiser_ru.qm Binary file i18n/sonic-visualiser_ru.qm has changed diff -r dabe6e994a9c -r bfd68cc71a25 i18n/sonic-visualiser_ru.ts --- a/i18n/sonic-visualiser_ru.ts Thu Dec 05 10:11:17 2013 +0000 +++ b/i18n/sonic-visualiser_ru.ts Thu Dec 05 10:57:51 2013 +0000 @@ -1697,8 +1697,8 @@ - - + + &Layer С&лой @@ -1804,168 +1804,168 @@ Экспортировать выделенное в звуковой файл - + 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 Прокрутить в&лево @@ -1995,277 +1995,277 @@ - + Exit %1 - + Reset Numbering Counters - + Reset to 1 all the counters used for counter-based labelling - + Left Влево - + Scroll the current pane to the left Прокрутить активное окно влево - + Scroll &Right Прокрутить в&право - + Right Вправо - + Scroll the current pane to the right Прокрутить активное окно вправо - + Ctrl+Left Ctrl+Влево - + Scroll the current pane a big step to the left Сделать большой шаг прокрутки влево - + Ctrl+Right Ctrl+Вправо - + Scroll the current pane a big step to the right Сделать большой шаг прокрутки вправо - + Zoom &In При&близить - + Up Вверх - + Increase the zoom level Увеличить масштаб отображения - + Zoom &Out &Отдалить - + Down Вниз - + Decrease the zoom level Уменьшить масштаб отображения - + Restore &Default Zoom &Восстановить обычный масштаб - + Zoom to &Fit &Уместить в окне - + Zoom to show the whole file Увидеть весь файл - + Show &Centre Line - + ' - + Show or hide the centre line - + Toggle All Time Rulers - + Hide times, layer names, and scale - + Show times and basic scale - + Show times, layer names, and scale - + 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 Добавить &существующий слой - + &Rename Layer... &Переименовать слой... - + Rename the currently active layer Переименовать активный слой - + &Delete Layer &Удалить слой - + Delete the currently active layer Удалить активный слой - + &Help &Справка - + &Help Reference &Руководство пользователя @@ -2290,254 +2290,252 @@ Показать информацию о 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? Какую область исходного звукового файла вы хотите экспортировать? - Export the selected regions into a single audio file - Экспортировать выделенные области в один звуковой файл - - - + Экспортировать выделенные области в один звуковой файл + + + 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 для записи @@ -2546,100 +2544,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 Изменить параметры работы приложения @@ -2648,75 +2646,75 @@ Н&едавние файлы - + &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 Добавить новый слой с частотой спектра @@ -2727,44 +2725,44 @@ - + &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 Показывать панели свойств слоёв сбоку от основного окна @@ -2797,77 +2795,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 Не по&казывать перекрытия совсем @@ -2876,7 +2874,7 @@ Спрятать индикацию центра, времён выделения, имена слоёв и масштаб - + Show &Minimal Overlays Показывать &минимум перекрытий @@ -2893,7 +2891,7 @@ Показывать индикатор центра, времена выделений, имена слоёв и масштаб - + Show &All Overlays Показывать в&се перекрытия @@ -2906,190 +2904,190 @@ Показывать весь текст и масштаб - + 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 Не удалось открыть местоположение - + Visible: %1 to %2 (duration %3) Видимая область: от %1 до %2 (длительность %3) - + Adjust the master playback level Изменить общую громкость воспроизведения - + Adjust the master playback speed Изменить общую скорость воспроизведения - + <br>With Ogg file decoder &copy; CSIRO Australia <br>С декодером Ogg &copy; CSIRO Australia - + <br>With MAD mp3 decoder &copy; Underbit Technologies Inc <br>С декодером MAD mp3 &copy; Underbit Technologies Inc - + <br>With libsamplerate &copy; Erik de Castro Lopo <br>С libsamplerate &copy; Erik de Castro Lopo - + <br>With libsndfile &copy; Erik de Castro Lopo <br>С libsndfile &copy; Erik de Castro Lopo - + <br>With FFTW3 &copy; Matteo Frigo and MIT <br>С FFTW3 &copy; Matteo Frigo и MIT - + <br>With Vamp plugin support (API v%1, host SDK v%2) &copy; Chris Cannam <br>С поддержкой расширений Vamp (API v%1, host SDK v%2) &copy; Chris Cannam - + <br>With Serd and Sord RDF parser and store &copy; David Robillard - + <br>With Dataquay Qt/RDF library &copy; Chris Cannam - + <br>With liblo Lite OSC library &copy; Steve Harris <br>С liblo Lite OSC library &copy; Steve Harris - + Export Image File... Экспортировать в файл изображения... - + Export a single pane to an image file Экспортировать всё окно в файл изображения - + Export the whole pane (%1x%2 pixels) Экспортировать всё окно (%1x%2 пикселов) - + Export the visible area only (%1x%2 pixels) Экспортировать только видимую часть (%1x%2 пикселов) - + Export the selection extent (%1x%2 pixels) Экспортировать выделение (%1x%2 пикселов) - + Export the selection extent Экспортировать выделение - + Which region of the current pane do you want to export as an image? Какую область текущего окна вы хотите экспортировать как изображение? - + Note: the whole pane is too wide to be exported as a single image. Примечание: всё окно слишком широко, чтобы сохранить его как изображение. - + Failed to save image file Не удалось сохранить файл изображения - + Failed to save image file %1 Не удалось сохранить файл изображения %1 - + Selection: %1 to %2 (duration %3) Выделение: %1 до %2 (длительность %3) @@ -3111,7 +3109,7 @@ - + Green Зелёный @@ -3143,7 +3141,7 @@ - + Bright Green Ярко-зелёный @@ -3178,293 +3176,303 @@ - + + &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 @@ -3473,488 +3481,498 @@ Открыть окно, в котором перечисляются клавиатурные комбинации 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 - + 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 Выбор инструмента - + Erase Стерка - + 5 5 - + Erase items from layer Стирать объекты слоя - + Measure Измеритель - + 6 6 - + Make measurements in layer Выполнять измерения в слое - + &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) - + <b>File open failed</b><p>Session file "%1" could not be opened <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:?} - + Playback speed: Normal Скорость воспроизведения: обычная - + Playback speed: %1%2% Скорость воспроизведения: %1%2% - + <b>Wrong sample rate</b><p>The sample rate of this audio file (%1 Hz) does not match the current playback rate (%2 Hz).<p>The file will play at the wrong speed and pitch.<p>Change the <i>Resample mismatching files on import</i> option under <i>File</i> -> <i>Preferences</i> if you want to alter this behaviour. - + <b>Overloaded</b><p>Audio effects plugin auditioning has been disabled due to a processing overload. - + Reset Counters Обнуление счетчиков - + <b>Layer generation failed</b><p>Failed to generate derived layer.<p>The layer transform "%1" failed:<p>%2 - + <b>Layer generation failed</b><p>Failed to generate a derived layer.<p>The layer transform "%1" failed.<p>No error information is available. - - + + Warning Предупреждение - + <b>Layer generation failed</b><p>Failed to regenerate derived layer "%1" using new data model as input.<p>The layer transform "%2" failed:<p>%3 - + <b>Layer generation failed</b><p>Failed to regenerate derived layer "%1" using new data model as input.<p>The layer transform "%2" failed.<p>No error information is available. - + <b>Warning when regenerating layer</b><p>When regenerating the derived layer "%1" using new data model as input:<p>%2 - + Failed to calculate alignment Не удалось рассчитать выравнивание - + <b>Alignment calculation failed</b><p>Failed to calculate an audio alignment using transform "%1":<p>%2 - + <br>With JACK audio output library &copy; Paul Davis and Jack O'Quin <br>С библиотекой JACK &copy; Paul Davis и Jack O'Quin - + <br>With PortAudio audio output library &copy; Ross Bencina and Phil Burk <br>С библиотекой PortAudio &copy; Ross Bencina и Phil Burk - + <br>With PulseAudio audio output library &copy; Lennart Poettering and Pierre Ossman <br>С библиотекой PulseAudio &copy; Lennart Poettering и Pierre Ossman - + <b>Overloaded</b><p>Audio playback speed processing has been reduced to a single channel, due to a processing overload. - + <br>With Rubber Band &copy; Chris Cannam <br>С Rubber Band &copy; Chris Cannam - + Find a Transform... Найти эффект трансформации... - + Search for a transform from the installed plugins, by name or description Найти эффект трансформации среди установленных расширений по названию или описанию - + Ctrl+M Ctrl+M - + <p>Sonic Visualiser is a program for viewing and exploring audio data for semantic music analysis and annotation.<br><a href="http://www.sonicvisualiser.org/">http://www.sonicvisualiser.org/</a></p> <p>Sonic Visualiser — программа для просмотра и исследования звукозаписей с целью семантического анализа и аннотации музыки.<br><a href="http://www.sonicvisualiser.org/">http://www.sonicvisualiser.org/</a></p> - + <p><small>%1 : %2 configuration</small></p> <p><small>%1 : конфигурация %2</small></p> - + With Qt v%1 &copy; Nokia Corporation С использованием Qt v%1 &copy; Nokia Corporation - + <br>With JACK audio output library v%1 &copy; Paul Davis and Jack O'Quin <br>С библиотекой JACK v%1 &copy; Paul Davis и Jack O'Quin - + <br>With PulseAudio audio output library v%1 &copy; Lennart Poettering and Pierre Ossman <br>С библиотекой PulseAudio v%1 &copy; Lennart Poettering и Pierre Ossman - + <br>With MAD mp3 decoder v%1 &copy; Underbit Technologies Inc <br>С декодером mp3 MAD v%1 &copy; Underbit Technologies Inc - + <br>With libsamplerate v%1 &copy; Erik de Castro Lopo <br>С libsamplerate v%1 &copy; Erik de Castro Lopo - + <br>With libsndfile v%1 &copy; Erik de Castro Lopo <br>С libsndfile v%1 &copy; Erik de Castro Lopo - + <br>With FFTW3 v%1 &copy; Matteo Frigo and MIT <br>С FFTW3 v%1 &copy; Matteo Frigo и MIT - + <br>With Rubber Band v%1 &copy; Chris Cannam <br>С Rubber Band v%1 &copy; Chris Cannam @@ -3975,141 +3993,141 @@ <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 @@ -4119,47 +4137,47 @@ Ctrl+Shift+S - + Insert Item at Selection Вставить объект в выделение - + 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 @@ -4172,22 +4190,22 @@ %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> @@ -5663,26 +5681,27 @@ Применить - - - - - - - + + + - + + + + + + %1: %1: - + OK ОК - + Cancel Отменить @@ -5697,47 +5716,77 @@ <домашний каталог> - + + Follow system locale + + + + + Russian + + + + + British English + + + + + American English + + + + + Czech + + + + + User interface language + + + + &General О&бщие - + Default session template for audio files: - + Standard Waveform - + Session &Template - + Select a directory to create cache subdirectory in Выберите каталог для хранения кэша - + Preferences Параметры - + <b>Restart required</b><p>One or more of the application preferences you have changed may not take full effect until Sonic Visualiser is restarted.</p><p>Please exit and restart the application now if you want these changes to take effect immediately.</p> <b>Требуется перезапуск программы</b><p>Некоторые изменившиеся параметры не могут быть учтены без перезапуска Sonic Visualiser.</p><p>Завершите работу с программой и повторно запустите ее, чтобы внесенные изменения возымели эффект.</p> - + Preferences Changed Параметры изменены - + Some preferences have been changed but not applied. Apply them before closing? Некоторые параметры работы программы @@ -5745,17 +5794,17 @@ Применить их перед закрытием? - + Playback audio device: Устройство воспроизведения: - + &Appearance Об&лик - + Anal&ysis &Анализ @@ -5966,18 +6015,18 @@ 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>Загрузите хотя бы один звуковой файл перед импортом аннотаций diff -r dabe6e994a9c -r bfd68cc71a25 icons/qm-logo-larger.png Binary file icons/qm-logo-larger.png has changed diff -r dabe6e994a9c -r bfd68cc71a25 icons/qm-logo-smaller.png Binary file icons/qm-logo-smaller.png has changed diff -r dabe6e994a9c -r bfd68cc71a25 main/MainWindow.cpp --- a/main/MainWindow.cpp Thu Dec 05 10:11:17 2013 +0000 +++ b/main/MainWindow.cpp Thu Dec 05 10:57:51 2013 +0000 @@ -83,6 +83,8 @@ #include "rdf/PluginRDFIndexer.h" #include "rdf/RDFExporter.h" +#include "Surveyer.h" +#include "NetworkPermissionTester.h" #include "framework/VersionTester.h" // For version information @@ -121,9 +123,6 @@ #include #include -using std::cerr; -using std::endl; - using std::vector; using std::map; using std::set; @@ -269,10 +268,6 @@ IconLoader il; - QSettings settings; - settings.beginGroup("MainWindow"); - settings.endGroup(); - m_playControlsSpacer = new QFrame; layout->setSpacing(4); @@ -323,12 +318,24 @@ connect(m_midiInput, SIGNAL(eventsAvailable()), this, SLOT(midiEventsAvailable())); - TransformFactory::getInstance()->startPopulationThread(); - - VersionTester *vt = new VersionTester - ("sonicvisualiser.org", "/latest-version.txt", SV_VERSION); - connect(vt, SIGNAL(newerVersionAvailable(QString)), - this, SLOT(newerVersionAvailable(QString))); + NetworkPermissionTester tester; + bool networkPermission = tester.havePermission(); + if (networkPermission) { + TransformFactory::getInstance()->startPopulationThread(); + m_surveyer = 0; + m_versionTester = 0; +/* + m_surveyer = new Surveyer + ("sonicvisualiser.org", "survey23-present.txt", "survey23.php"); + m_versionTester = new VersionTester + ("sonicvisualiser.org", "latest-version.txt", SV_VERSION); + connect(m_versionTester, SIGNAL(newerVersionAvailable(QString)), + this, SLOT(newerVersionAvailable(QString))); +*/ + } else { + m_surveyer = 0; + m_versionTester = 0; + } } MainWindow::~MainWindow() @@ -338,6 +345,8 @@ delete m_activityLog; delete m_preferencesDialog; delete m_layerTreeDialog; + delete m_versionTester; + delete m_surveyer; Profiles::getInstance()->dump(); // SVDEBUG << "MainWindow::~MainWindow finishing" << endl; } @@ -543,18 +552,18 @@ connect(this, SIGNAL(canExportAudio(bool)), action, SLOT(setEnabled(bool))); menu->addAction(action); - action = new QAction(tr("&Export Audio Data..."), this); + action = new QAction(tr("Export Audio Data..."), this); action->setStatusTip(tr("Export audio from selection into a data file")); connect(action, SIGNAL(triggered()), this, SLOT(exportAudioData())); connect(this, SIGNAL(canExportAudio(bool)), action, SLOT(setEnabled(bool))); menu->addAction(action); - QAction *actionCreateIMAF = new QAction(tr("&Export IMAF File..."), this); + QAction *actionCreateIMAF = new QAction(tr("Export IMAF File..."), this); actionCreateIMAF->setStatusTip(tr("Export selection as an IMAF file")); menu->addAction(actionCreateIMAF); connect(actionCreateIMAF,SIGNAL(triggered()),this,SLOT(exportIMAF())); - QAction *actionOpenIMAF = new QAction(tr("&Import IMAF File..."), this); + QAction *actionOpenIMAF = new QAction(tr("Import IMAF File..."), this); actionOpenIMAF->setStatusTip(tr("Import IMAF file")); menu->addAction(actionOpenIMAF); connect(actionOpenIMAF,SIGNAL(triggered()),this,SLOT(importIMAF())); @@ -1588,7 +1597,7 @@ QString name = transforms[i].name; if (name == "") name = transforms[i].identifier; -// std::cerr << "Plugin Name: " << name << std::endl; +// cerr << "Plugin Name: " << name << endl; TransformDescription::Type type = transforms[i].type; QString typeStr = factory->getTransformTypeName(type); @@ -1622,19 +1631,19 @@ action->setStatusTip(transforms[i].longDescription); if (categoryMenus[type].find(category) == categoryMenus[type].end()) { - std::cerr << "WARNING: MainWindow::setupMenus: Internal error: " + cerr << "WARNING: MainWindow::setupMenus: Internal error: " << "No category menu for transform \"" << name << "\" (category = \"" - << category << "\")" << std::endl; + << category << "\")" << endl; } else { categoryMenus[type][category]->addAction(action); } if (makerMenus[type].find(maker) == makerMenus[type].end()) { - std::cerr << "WARNING: MainWindow::setupMenus: Internal error: " + cerr << "WARNING: MainWindow::setupMenus: Internal error: " << "No maker menu for transform \"" << name << "\" (maker = \"" - << maker << "\")" << std::endl; + << maker << "\")" << endl; } else { makerMenus[type][maker]->addAction(action); } @@ -1807,9 +1816,9 @@ TransformActionReverseMap::iterator ti = m_transformActionsReverse.find(transforms[i]); if (ti == m_transformActionsReverse.end()) { - std::cerr << "WARNING: MainWindow::setupRecentTransformsMenu: " - << "Unknown transform \"" << transforms[i].toStdString() - << "\" in recent transforms list" << std::endl; + cerr << "WARNING: MainWindow::setupRecentTransformsMenu: " + << "Unknown transform \"" << transforms[i] + << "\" in recent transforms list" << endl; continue; } if (i == 0) { @@ -1848,28 +1857,28 @@ for (int i = 0; i < m_paneStack->getPaneCount(); ++i) { - Pane *pane = m_paneStack->getPane(i); - if (!pane) continue; - - for (int j = 0; j < pane->getLayerCount(); ++j) { - - Layer *layer = pane->getLayer(j); - if (!layer) continue; - if (observedLayers.find(layer) != observedLayers.end()) { -// std::cerr << "found duplicate layer " << layer << std::endl; - continue; - } - -// std::cerr << "found new layer " << layer << " (name = " -// << layer->getLayerPresentationName() << ")" << std::endl; - - orderedLayers.push_back(layer); - observedLayers.insert(layer); + Pane *pane = m_paneStack->getPane(i); + if (!pane) continue; + + for (int j = 0; j < pane->getLayerCount(); ++j) { + + Layer *layer = pane->getLayer(j); + if (!layer) continue; + if (observedLayers.find(layer) != observedLayers.end()) { +// cerr << "found duplicate layer " << layer << endl; + continue; + } + +// cerr << "found new layer " << layer << " (name = " +// << layer->getLayerPresentationName() << ")" << endl; + + orderedLayers.push_back(layer); + observedLayers.insert(layer); if (factory->isLayerSliceable(layer)) { sliceableLayers.insert(layer); } - } + } } map observedNames; @@ -2438,7 +2447,7 @@ items, c, false, &ok); if (!ok || item.isEmpty()) return; if (m.find(item) == m.end()) { - cerr << "WARNING: Model " << item.toStdString() + cerr << "WARNING: Model " << item << " not found in list!" << endl; } else { model = m[item]; @@ -2586,15 +2595,15 @@ Pane *pane = m_paneStack->getCurrentPane(); if (!pane) { - // shouldn't happen, as the menu action should have been disabled - std::cerr << "WARNING: MainWindow::importLayer: no current pane" << std::endl; - return; + // shouldn't happen, as the menu action should have been disabled + cerr << "WARNING: MainWindow::importLayer: no current pane" << endl; + return; } if (!getMainModel()) { - // shouldn't happen, as the menu action should have been disabled - std::cerr << "WARNING: MainWindow::importLayer: No main model -- hence no default sample rate available" << std::endl; - return; + // shouldn't happen, as the menu action should have been disabled + cerr << "WARNING: MainWindow::importLayer: No main model -- hence no default sample rate available" << endl; + return; } QString path = getOpenFileName(FileFinder::LayerFile); @@ -2979,9 +2988,9 @@ QAction *action = dynamic_cast(obj); if (!action) { - std::cerr << "WARNING: MainWindow::openRecentFile: sender is not an action" - << std::endl; - return; + cerr << "WARNING: MainWindow::openRecentFile: sender is not an action" + << endl; + return; } QString path = action->text(); @@ -3007,17 +3016,17 @@ QAction *action = qobject_cast(s); if (!action) { - std::cerr << "WARNING: MainWindow::applyTemplate: sender is not an action" - << std::endl; - return; + cerr << "WARNING: MainWindow::applyTemplate: sender is not an action" + << endl; + return; } QString n = action->objectName(); if (n == "") n = action->text(); if (n == "") { - std::cerr << "WARNING: MainWindow::applyTemplate: sender has no name" - << std::endl; + cerr << "WARNING: MainWindow::applyTemplate: sender has no name" + << endl; return; } @@ -3158,18 +3167,18 @@ void MainWindow::closeEvent(QCloseEvent *e) { -// std::cerr << "MainWindow::closeEvent" << std::endl; +// cerr << "MainWindow::closeEvent" << endl; if (m_openingAudioFile) { -// std::cerr << "Busy - ignoring close event" << std::endl; - e->ignore(); - return; +// cerr << "Busy - ignoring close event" << endl; + e->ignore(); + return; } if (!m_abandoning && !checkSaveModified()) { -// std::cerr << "Close refused by user - ignoring close event" << endl; - e->ignore(); - return; +// cerr << "Close refused by user - ignoring close event" << endl; + e->ignore(); + return; } QSettings settings; @@ -3395,17 +3404,17 @@ QAction *action = dynamic_cast(s); if (!action) { - std::cerr << "WARNING: MainWindow::addPane: sender is not an action" - << std::endl; - return; + cerr << "WARNING: MainWindow::addPane: sender is not an action" + << endl; + return; } PaneActionMap::iterator i = m_paneActions.find(action); if (i == m_paneActions.end()) { - std::cerr << "WARNING: MainWindow::addPane: unknown action " - << action->objectName() << std::endl; - return; + cerr << "WARNING: MainWindow::addPane: unknown action " + << action->objectName() << endl; + return; } addPane(i->second, action->text()); @@ -3430,15 +3439,15 @@ if (configuration.layer != LayerFactory::TimeRuler && configuration.layer != LayerFactory::Spectrum) { - if (!m_timeRulerLayer) { -// std::cerr << "no time ruler layer, creating one" << std::endl; - m_timeRulerLayer = m_document->createMainModelLayer - (LayerFactory::TimeRuler); - } + if (!m_timeRulerLayer) { +// cerr << "no time ruler layer, creating one" << endl; + m_timeRulerLayer = m_document->createMainModelLayer + (LayerFactory::TimeRuler); + } // SVDEBUG << "adding time ruler layer " << m_timeRulerLayer << endl; - m_document->addLayerToView(pane, m_timeRulerLayer); + m_document->addLayerToView(pane, m_timeRulerLayer); } Layer *newLayer = m_document->createLayer(configuration.layer); @@ -3458,9 +3467,9 @@ } if (!model) { - std::cerr << "WARNING: Model " << (void *)suggestedModel + cerr << "WARNING: Model " << (void *)suggestedModel << " appears in pane action map, but is not reported " - << "by document as a valid transform source" << std::endl; + << "by document as a valid transform source" << endl; } } @@ -3492,16 +3501,16 @@ QAction *action = dynamic_cast(s); if (!action) { - std::cerr << "WARNING: MainWindow::addLayer: sender is not an action" - << std::endl; - return; + cerr << "WARNING: MainWindow::addLayer: sender is not an action" + << endl; + return; } Pane *pane = m_paneStack->getCurrentPane(); if (!pane) { - std::cerr << "WARNING: MainWindow::addLayer: no current pane" << std::endl; - return; + cerr << "WARNING: MainWindow::addLayer: no current pane" << endl; + return; } ExistingLayerActionMap::iterator ei = m_existingLayerActions.find(action); @@ -3538,29 +3547,30 @@ if (i == m_transformActions.end()) { - LayerActionMap::iterator i = m_layerActions.find(action); - - if (i == m_layerActions.end()) { - std::cerr << "WARNING: MainWindow::addLayer: unknown action " - << action->objectName() << std::endl; - return; - } - - LayerFactory::LayerType type = i->second.layer; - - LayerFactory::LayerTypeSet emptyTypes = - LayerFactory::getInstance()->getValidEmptyLayerTypes(); - - Layer *newLayer = 0; - - if (emptyTypes.find(type) != emptyTypes.end()) { - - newLayer = m_document->createEmptyLayer(type); + LayerActionMap::iterator i = m_layerActions.find(action); + + if (i == m_layerActions.end()) { + cerr << "WARNING: MainWindow::addLayer: unknown action " + << action->objectName() << endl; + return; + } + + LayerFactory::LayerType type = i->second.layer; + + LayerFactory::LayerTypeSet emptyTypes = + LayerFactory::getInstance()->getValidEmptyLayerTypes(); + + Layer *newLayer = 0; + + if (emptyTypes.find(type) != emptyTypes.end()) { + + newLayer = m_document->createEmptyLayer(type); + if (newLayer) { m_toolActions[ViewManager::DrawMode]->trigger(); } - } else { + } else { Model *model = i->second.sourceModel; @@ -3590,12 +3600,12 @@ m_document->setChannel(newLayer, i->second.channel); m_document->setModel(newLayer, model); } else { - std::cerr << "WARNING: MainWindow::addLayer: unknown model " + cerr << "WARNING: MainWindow::addLayer: unknown model " << model << " (\"" - << (model ? model->objectName().toStdString() : "") + << (model ? model->objectName() : "") << "\") in layer action map" - << std::endl; + << endl; } } } @@ -3636,8 +3646,8 @@ { Pane *pane = m_paneStack->getCurrentPane(); if (!pane) { - std::cerr << "WARNING: MainWindow::addLayer: no current pane" << std::endl; - return; + cerr << "WARNING: MainWindow::addLayer: no current pane" << endl; + return; } Transform transform = TransformFactory::getInstance()-> @@ -3792,7 +3802,7 @@ float percent = m_playSpeed->mappedValue(); float factor = mapper.getFactorForValue(percent); -// std::cerr << "speed = " << position << " percent = " << percent << " factor = " << factor << std::endl; +// cerr << "speed = " << position << " percent = " << percent << " factor = " << factor << endl; bool something = (position != 100); @@ -4474,7 +4484,7 @@ QString tag = QString("version-%1-available-show").arg(version); if (settings.value(tag, true).toBool()) { QString title(tr("Newer version available")); - QString text(tr("

Newer version available

You are using version %1 of Sonic Visualiser, but version %3 is now available.

Please see the Sonic Visualiser website for more information.

").arg(SV_VERSION).arg(version)); + QString text(tr("

Newer version available

You are using version %1 of Sonic Visualiser, but version %2 is now available.

Please see the Sonic Visualiser website for more information.

").arg(SV_VERSION).arg(version)); QMessageBox::information(this, title, text); settings.setValue(tag, false); } diff -r dabe6e994a9c -r bfd68cc71a25 main/MainWindow.h --- a/main/MainWindow.h Thu Dec 05 10:11:17 2013 +0000 +++ b/main/MainWindow.h Thu Dec 05 10:57:51 2013 +0000 @@ -16,48 +16,13 @@ #ifndef _MAIN_WINDOW_H_ #define _MAIN_WINDOW_H_ -#include -#include -#include -#include +#include "framework/MainWindowBase.h" -#include "framework/MainWindowBase.h" -#include "base/Command.h" -#include "view/ViewManager.h" -#include "base/PropertyContainer.h" -#include "base/RecentFiles.h" -#include "layer/LayerFactory.h" -#include "transform/Transform.h" -#include "framework/SVFileReader.h" -#include "data/fileio/FileFinder.h" -#include "data/fileio/FileSource.h" -#include "widgets/LayerTreeDialog.h" -#include +class VersionTester; +class Surveyer; +class LayerTreeDialog; +class ActivityLog; -class Document; -class PaneStack; -class Pane; -class View; -class Fader; -class Overview; -class Layer; -class WaveformLayer; -class WaveFileModel; -class AudioCallbackPlaySource; -class AudioCallbackPlayTarget; -class CommandHistory; -class QMenu; -class AudioDial; -class QLabel; -class QCheckBox; -class PreferencesDialog; -class QTreeView; -class QPushButton; -class OSCQueue; -class OSCMessage; -class KeyReference; -class Labeller; -class ActivityLog; class QFileSystemWatcher; class QScrollArea; @@ -251,15 +216,18 @@ QFileSystemWatcher *m_templateWatcher; + Surveyer *m_surveyer; + VersionTester *m_versionTester; + struct LayerConfiguration { LayerConfiguration(LayerFactory::LayerType _layer = LayerFactory::TimeRuler, Model *_source = 0, int _channel = -1) : layer(_layer), sourceModel(_source), channel(_channel) { } - LayerFactory::LayerType layer; + LayerFactory::LayerType layer; Model *sourceModel; - int channel; + int channel; }; typedef std::map PaneActionMap; diff -r dabe6e994a9c -r bfd68cc71a25 main/NetworkPermissionTester.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main/NetworkPermissionTester.cpp Thu Dec 05 10:57:51 2013 +0000 @@ -0,0 +1,87 @@ +/* -*- 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 "NetworkPermissionTester.h" + +#include "../version.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +bool +NetworkPermissionTester::havePermission() +{ + QSettings settings; + settings.beginGroup("Preferences"); + + QString tag = QString("network-permission-%1").arg(SV_VERSION); + + bool permish = false; + + if (settings.contains(tag)) { + permish = settings.value(tag, false).toBool(); + } else { + + QDialog d; + d.setWindowTitle(QCoreApplication::translate("NetworkPermissionTester", "Welcome to Sonic Visualiser")); + + QGridLayout *layout = new QGridLayout; + d.setLayout(layout); + + QLabel *label = new QLabel; + label->setWordWrap(true); + label->setText + (QCoreApplication::translate + ("NetworkPermissionTester", + "

Welcome to Sonic Visualiser!

" + "

Sonic Visualiser is a program for viewing and exploring audio data for semantic music analysis and annotation.

" + "

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.

" + "

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

" + "


" + "

Before we go on...

" + "

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

" + "

This is to:

" + "
  • look up information about available and installed plugins.
" + "

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

" + "

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

")); + layout->addWidget(label, 0, 0); + + QCheckBox *cb = new QCheckBox(QCoreApplication::translate("NetworkPermissionTester", "Allow this")); + cb->setChecked(true); + layout->addWidget(cb, 1, 0); + + QDialogButtonBox *bb = new QDialogButtonBox(QDialogButtonBox::Ok); + QObject::connect(bb, SIGNAL(accepted()), &d, SLOT(accept())); + layout->addWidget(bb, 2, 0); + + d.exec(); + + bool permish = cb->isChecked(); + settings.setValue(tag, permish); + } + + settings.endGroup(); + + return permish; +} + + + diff -r dabe6e994a9c -r bfd68cc71a25 main/NetworkPermissionTester.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main/NetworkPermissionTester.h Thu Dec 05 10:57:51 2013 +0000 @@ -0,0 +1,27 @@ +/* -*- 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 NETWORK_PERMISSION_TESTER_H +#define NETWORK_PERMISSION_TESTER_H + +class NetworkPermissionTester +{ +public: + NetworkPermissionTester() { } + bool havePermission(); +}; + +#endif + + diff -r dabe6e994a9c -r bfd68cc71a25 main/OSCHandler.cpp --- a/main/OSCHandler.cpp Thu Dec 05 10:11:17 2013 +0000 +++ b/main/OSCHandler.cpp Thu Dec 05 10:57:51 2013 +0000 @@ -46,8 +46,8 @@ message.getArg(0).canConvert(QVariant::String)) { QString path = message.getArg(0).toString(); if (open(path, ReplaceMainModel) != FileOpenSucceeded) { - std::cerr << "MainWindow::handleOSCMessage: File open failed for path \"" - << path << "\"" << std::endl; + cerr << "MainWindow::handleOSCMessage: File open failed for path \"" + << path << "\"" << endl; } //!!! we really need to spin here and not return until the // file has been completely decoded... @@ -59,8 +59,8 @@ message.getArg(0).canConvert(QVariant::String)) { QString path = message.getArg(0).toString(); if (open(path, CreateAdditionalModel) != FileOpenSucceeded) { - std::cerr << "MainWindow::handleOSCMessage: File open failed for path \"" - << path << "\"" << std::endl; + cerr << "MainWindow::handleOSCMessage: File open failed for path \"" + << path << "\"" << endl; } } @@ -76,8 +76,8 @@ std::vector recent = m_recentFiles.getRecent(); if (n >= 0 && n < int(recent.size())) { if (open(recent[n], ReplaceMainModel) != FileOpenSucceeded) { - std::cerr << "MainWindow::handleOSCMessage: File open failed for path \"" - << recent[n] << "\"" << std::endl; + cerr << "MainWindow::handleOSCMessage: File open failed for path \"" + << recent[n] << "\"" << endl; } } @@ -294,8 +294,8 @@ channel = message.getArg(0).toInt(); if (channel < -1 || channel > int(getMainModel()->getChannelCount())) { - std::cerr << "WARNING: MainWindow::handleOSCMessage: channel " - << channel << " out of range" << std::endl; + cerr << "WARNING: MainWindow::handleOSCMessage: channel " + << channel << " out of range" << endl; channel = -1; } } @@ -306,8 +306,8 @@ LayerFactory::getInstance()->getLayerTypeForName(str); if (type == LayerFactory::UnknownLayer) { - std::cerr << "WARNING: MainWindow::handleOSCMessage: unknown layer " - << "type " << str << std::endl; + cerr << "WARNING: MainWindow::handleOSCMessage: unknown layer " + << "type " << str << endl; } else { LayerConfiguration configuration(type, @@ -428,8 +428,8 @@ deleteCurrentLayer(); } else { - - std::cerr << "WARNING: MainWindow::handleOSCMessage: Unknown delete target " << target << std::endl; + + cerr << "WARNING: MainWindow::handleOSCMessage: Unknown delete target " << target << endl; } } @@ -544,9 +544,9 @@ } } else { - std::cerr << "WARNING: MainWindow::handleOSCMessage: Unknown or unsupported " - << "method \"" << message.getMethod().toStdString() - << "\"" << std::endl; + cerr << "WARNING: MainWindow::handleOSCMessage: Unknown or unsupported " + << "method \"" << message.getMethod() + << "\"" << endl; } } diff -r dabe6e994a9c -r bfd68cc71a25 main/PreferencesDialog.cpp --- a/main/PreferencesDialog.cpp Thu Dec 05 10:11:17 2013 +0000 +++ b/main/PreferencesDialog.cpp Thu Dec 05 10:57:51 2013 +0000 @@ -142,7 +142,7 @@ QString targetName = settings.value("audio-target", "").toString(); settings.endGroup(); - for (int i = 0; i < devices.size(); ++i) { + for (int i = 0; i < (int)devices.size(); ++i) { audioDevice->addItem(AudioTargetFactory::getInstance() ->getCallbackTargetDescription(devices[i])); if (targetName == devices[i]) audioDevice->setCurrentIndex(i); @@ -191,7 +191,7 @@ connect(showSplash, SIGNAL(stateChanged(int)), this, SLOT(showSplashChanged(int))); -#ifndef Q_WS_MAC +#ifndef Q_OS_MAC QComboBox *bgMode = new QComboBox; int bg = prefs->getPropertyRangeAndValue("Background Mode", &min, &max, &deflt); @@ -205,6 +205,41 @@ this, SLOT(backgroundModeChanged(int))); #endif + settings.beginGroup("Preferences"); + QString userLocale = settings.value("locale", "").toString(); + m_currentLocale = userLocale; + settings.endGroup(); + + QComboBox *locale = new QComboBox; + QStringList localeFiles = QDir(":i18n").entryList(QStringList() << "*.qm"); + locale->addItem(tr("Follow system locale")); + m_locales.push_back(""); + if (userLocale == "") { + locale->setCurrentIndex(0); + } + foreach (QString f, localeFiles) { + QString f0 = f; + f.replace("sonic-visualiser_", "").replace(".qm", ""); + if (f == f0) { // our expectations about filename format were not met + cerr << "INFO: Unexpected filename " << f << " in i18n resource directory" << endl; + } else { + m_locales.push_back(f); + QString displayText; + // Add new translations here + if (f == "ru") displayText = tr("Russian"); + else if (f == "en_GB") displayText = tr("British English"); + else if (f == "en_US") displayText = tr("American English"); + else if (f == "cs_CZ") displayText = tr("Czech"); + else displayText = f; + locale->addItem(QString("%1 [%2]").arg(displayText).arg(f)); + if (userLocale == f) { + locale->setCurrentIndex(locale->count() - 1); + } + } + } + connect(locale, SIGNAL(currentIndexChanged(int)), + this, SLOT(localeChanged(int))); + QSpinBox *fontSize = new QSpinBox; int fs = prefs->getPropertyRangeAndValue("View Font Size", &min, &max, &deflt); @@ -239,6 +274,10 @@ 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(prefs->getPropertyLabel ("Temporary Directory Root"))), row, 0); @@ -276,7 +315,7 @@ row, 0); subgrid->addWidget(propertyLayout, row++, 1, 1, 2); -#ifndef Q_WS_MAC +#ifndef Q_OS_MAC subgrid->addWidget(new QLabel(tr("%1:").arg(prefs->getPropertyLabel ("Background Mode"))), row, 0); @@ -484,6 +523,14 @@ } void +PreferencesDialog::localeChanged(int i) +{ + m_currentLocale = m_locales[i]; + m_applyButton->setEnabled(true); + m_changesOnRestart = true; +} + +void PreferencesDialog::tempDirRootChanged(QString r) { m_tempDirRoot = r; @@ -564,6 +611,10 @@ settings.setValue("sessiontemplate", m_currentTemplate); settings.endGroup(); + settings.beginGroup("Preferences"); + settings.setValue("locale", m_currentLocale); + settings.endGroup(); + m_applyButton->setEnabled(false); if (m_changesOnRestart) { diff -r dabe6e994a9c -r bfd68cc71a25 main/PreferencesDialog.h --- a/main/PreferencesDialog.h Thu Dec 05 10:11:17 2013 +0000 +++ b/main/PreferencesDialog.h Thu Dec 05 10:57:51 2013 +0000 @@ -60,6 +60,7 @@ void viewFontSizeChanged(int sz); void showSplashChanged(int state); void defaultTemplateChanged(int); + void localeChanged(int); void tempDirButtonClicked(); @@ -79,6 +80,9 @@ QString m_currentTemplate; QStringList m_templates; + QString m_currentLocale; + QStringList m_locales; + WindowType m_windowType; int m_spectrogramSmoothing; int m_spectrogramXSmoothing; diff -r dabe6e994a9c -r bfd68cc71a25 main/Surveyer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main/Surveyer.cpp Thu Dec 05 10:57:51 2013 +0000 @@ -0,0 +1,143 @@ +/* -*- 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 "Surveyer.h" + +#include + +#include + +#include +#include +#include +#include +#include + +#include "version.h" + +#include "transform/TransformFactory.h" +#include "plugin/PluginIdentifier.h" + +Surveyer::Surveyer(QString hostname, QString testPath, QString surveyPath) : + m_httpFailed(false), + m_hostname(hostname), + m_testPath(testPath), + m_surveyPath(surveyPath), + m_reply(0), + m_nm(new QNetworkAccessManager) +{ + QSettings settings; + settings.beginGroup("Survey"); + if (!settings.contains("countdown")) { + settings.setValue("countdown", 15); + settings.endGroup(); + return; + } + int countdown = settings.value("countdown").toInt(); + if (countdown == 0) { + // The countdown value will now remain 0 until we have + // successfully tested for a survey and offered it to the + // user. If the survey doesn't exist any more, then we'll + // simply never present it to the user and the countdown will + // remain 0 forever. If the survey does exist, then we offer + // the user the chance to respond to it and (regardless of + // whether they want to or not) set the countdown to -1 so + // that it is never offered again. + QUrl url(QString("http://%1/%2").arg(m_hostname).arg(m_testPath)); + cerr << "Surveyer: Test URL is " << url << endl; + m_reply = m_nm->get(QNetworkRequest(url)); + connect(m_reply, SIGNAL(error(QNetworkReply::NetworkError)), + this, SLOT(error(QNetworkReply::NetworkError))); + connect(m_reply, SIGNAL(finished()), this, SLOT(finished())); + } else if (countdown > 0) { + settings.setValue("countdown", countdown-1); + } + settings.endGroup(); +} + +Surveyer::~Surveyer() +{ + if (m_reply) { + m_reply->abort(); + m_reply->deleteLater(); + } + delete m_nm; +} + +void +Surveyer::error(QNetworkReply::NetworkError) +{ + cerr << "Surveyer: error: " << m_reply->errorString() << endl; + m_httpFailed = true; +} + +void +Surveyer::finished() +{ + if (m_httpFailed) return; + + QString title = "Sonic Visualiser - User Survey"; + QString text = "

Sonic Visualiser: Take part in our survey!

We at Queen Mary, University of London are running a short survey for users of Sonic Visualiser. We are trying to find out how useful Sonic Visualiser is to people, and what we can do to improve it.

We do not ask for any personal information, and it should only take five minutes.

Would you like to take part?

"; + + QMessageBox mb(dynamic_cast(parent())); + mb.setWindowTitle(title); + mb.setText(text); + + QPushButton *yes = mb.addButton(tr("Yes! Take me to the survey"), QMessageBox::ActionRole); + mb.addButton(tr("No, thanks"), QMessageBox::RejectRole); + + mb.exec(); + + QSettings settings; + settings.beginGroup("Survey"); + settings.setValue("countdown", -1); + settings.endGroup(); + + if (mb.clickedButton() == yes) { + QString svarg = SV_VERSION; + QString platformarg = "unknown"; +#ifdef Q_OS_WIN32 + platformarg = "win32"; +#else +#ifdef Q_OS_MAC + platformarg = "osx"; +#else + platformarg = "posix"; +#endif +#endif + QString plugsarg; + TransformFactory *tf = TransformFactory::getInstance(); + if (tf) { + TransformList tl = tf->getAllTransformDescriptions(); + std::set packages; + for (size_t i = 0; i < tl.size(); ++i) { + TransformId id = tl[i].identifier; + Transform t; + t.setIdentifier(id); + QString plugid = t.getPluginIdentifier(); + QString type, soname, label; + PluginIdentifier::parseIdentifier(plugid, type, soname, label); + if (type == "vamp") packages.insert(soname); + } + for (std::set::const_iterator i = packages.begin(); + i != packages.end(); ++i) { + if (plugsarg != "") plugsarg = plugsarg + ","; + plugsarg = plugsarg + *i; + } + } + QDesktopServices::openUrl(QUrl(QString("http://%1/%2?sv=%3&plugs=%4&platform=%5").arg(m_hostname).arg(m_surveyPath).arg(svarg).arg(plugsarg).arg(platformarg))); + } +} + + diff -r dabe6e994a9c -r bfd68cc71a25 main/Surveyer.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main/Surveyer.h Thu Dec 05 10:57:51 2013 +0000 @@ -0,0 +1,47 @@ +/* -*- 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 _SURVEYER_H_ +#define _SURVEYER_H_ + +#include +#include +#include +#include + +class QNetworkAccessManager; + +class Surveyer : public QObject +{ + Q_OBJECT + +public: + Surveyer(QString hostname, QString testPath, QString surveyPath); + virtual ~Surveyer(); + +protected slots: + void finished(); + void error(QNetworkReply::NetworkError); + +private: + bool m_httpFailed; + QString m_hostname; + QString m_testPath; + QString m_surveyPath; + QNetworkReply *m_reply; + QNetworkAccessManager *m_nm; +}; + +#endif + diff -r dabe6e994a9c -r bfd68cc71a25 main/main.cpp --- a/main/main.cpp Thu Dec 05 10:11:17 2013 +0000 +++ b/main/main.cpp Thu Dec 05 10:57:51 2013 +0000 @@ -179,7 +179,7 @@ { // Avoid this happening more than once across threads - std::cerr << "signalHandler: cleaning up and exiting" << std::endl; + cerr << "signalHandler: cleaning up and exiting" << endl; cleanupMutex.lock(); if (!cleanedUp) { TempDirectory::getInstance()->cleanup(); @@ -266,8 +266,8 @@ bool oscSupport = true; if (args.contains("--help") || args.contains("-h") || args.contains("-?")) { - std::cerr << QApplication::tr( - "\nSonic Visualiser is a program for viewing and exploring audio data\nfor semantic music analysis and annotation.\n\nUsage:\n\n %1 [--no-audio] [--no-osc] [ ...]\n\n --no-audio: Do not attempt to open an audio output device\n --no-osc: Do not provide an Open Sound Control port for remote control\n : One or more Sonic Visualiser (.sv) and audio files may be provided.\n").arg(argv[0]) << std::endl; + cerr << QApplication::tr( + "\nSonic Visualiser is a program for viewing and exploring audio data\nfor semantic music analysis and annotation.\n\nUsage:\n\n %1 [--no-audio] [--no-osc] [ ...]\n\n --no-audio: Do not attempt to open an audio output device\n --no-osc: Do not provide an Open Sound Control port for remote control\n : One or more Sonic Visualiser (.sv) and audio files may be provided.\n").arg(argv[0]) << endl; exit(2); } @@ -317,6 +317,10 @@ QString language = QLocale::system().name(); + settings.beginGroup("Preferences"); + language = settings.value("locale", language).toString(); + settings.endGroup(); + QTranslator qtTranslator; QString qtTrName = QString("qt_%1").arg(language); SVDEBUG << "Loading " << qtTrName << "... "; @@ -331,7 +335,7 @@ if (!success) { SVDEBUG << "Failed\nFailed to load Qt translation for locale" << endl; } else { - std::cerr << "Done" << std::endl; + cerr << "Done" << endl; } application.installTranslator(&qtTranslator); @@ -501,7 +505,7 @@ haveMainModel = true; } } else { - std::cerr << "WARNING: Ignoring additional session file argument \"" << path << "\"" << std::endl; + cerr << "WARNING: Ignoring additional session file argument \"" << path << "\"" << endl; status = MainWindow::FileOpenSucceeded; } } diff -r dabe6e994a9c -r bfd68cc71a25 sonic-visualiser.pro --- a/sonic-visualiser.pro Thu Dec 05 10:11:17 2013 +0000 +++ b/sonic-visualiser.pro Thu Dec 05 10:57:51 2013 +0000 @@ -5,7 +5,7 @@ # 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 - svcore/data/fileio/test + SUBDIRS += svcore/data/fileio/test } sub_sv.file = sv.pro diff -r dabe6e994a9c -r bfd68cc71a25 sonic-visualiser.qrc --- a/sonic-visualiser.qrc Thu Dec 05 10:11:17 2013 +0000 +++ b/sonic-visualiser.qrc Thu Dec 05 10:57:51 2013 +0000 @@ -96,6 +96,8 @@ icons/sv-64x64.png icons/sv-128x128.png icons/sv-splash.png + icons/qm-logo-larger.png + icons/qm-logo-smaller.png samples/bass.wav samples/beep.wav samples/bounce.wav diff -r dabe6e994a9c -r bfd68cc71a25 sv.pro --- a/sv.pro Thu Dec 05 10:11:17 2013 +0000 +++ b/sv.pro Thu Dec 05 10:57:51 2013 +0000 @@ -60,24 +60,29 @@ dataquay/dataquay.lib } !win* { -#PRE_TARGETDEPS += svapp/libsvapp.a \ -# svgui/libsvgui.a \ -# svcore/libsvcore.a \ -# dataquay/libdataquay.a +PRE_TARGETDEPS += svapp/libsvapp.a \ + svgui/libsvgui.a \ + svcore/libsvcore.a \ + dataquay/libdataquay.a } RESOURCES += sonic-visualiser.qrc HEADERS += main/MainWindow.h \ - main/PreferencesDialog.h \ main/IMAFencoder.h \ - main/checkbox.h + main/checkbox.h \ + main/NetworkPermissionTester.h \ + main/Surveyer.h \ + main/PreferencesDialog.h + SOURCES += main/main.cpp \ main/OSCHandler.cpp \ main/MainWindow.cpp \ - main/PreferencesDialog.cpp \ main/IMAFencoder.c \ - main/imafdecoder.cpp + main/imafdecoder.cpp \ + main/NetworkPermissionTester.cpp \ + main/Surveyer.cpp \ + main/PreferencesDialog.cpp # for mac integration QMAKE_INFO_PLIST = deploy/osx/Info.plist