GithubHelp home page GithubHelp logo

sonic-visualiser / sonic-visualiser Goto Github PK

View Code? Open in Web Editor NEW
521.0 521.0 47.0 29.23 MB

Visualisation, analysis, and annotation of music audio recordings

Home Page: https://sonicvisualiser.org

License: GNU General Public License v2.0

Shell 8.11% Batchfile 1.42% C++ 60.63% PowerShell 0.80% Standard ML 22.18% Meson 6.86%

sonic-visualiser's Introduction

Sonic Visualiser

A program for viewing and analysing the contents of music audio files

Sonic Visualiser small screenshot

Sonic Visualiser is a free, open source, cross-platform desktop application for music audio visualisation, annotation, and analysis.

With Sonic Visualiser you can:

  • Load audio files in various formats (WAV/AIFF, Ogg, Opus, MP3 etc) and view their waveforms
  • Look at audio visualisations such as spectrogram views, with interactive adjustment of display parameters
  • Annotate audio data by adding labelled time points and defining segments, point values and curves
  • Run feature-extraction plugins to calculate annotations automatically, using algorithms such as beat trackers, pitch detectors and so on (see https://vamp-plugins.org/)
  • Import annotation data from various text formats and MIDI files
  • Play back the original audio with synthesised annotations, taking care to synchronise playback with the display position
  • Slow down and speed up playback and loop segments of interest, including seamless looping of complex non-contiguous areas
  • Export annotations and audio selections to external files.

Sonic Visualiser can also be controlled remotely using the Open Sound Control (OSC) protocol (if support is compiled in).

Credits

If you are using Sonic Visualiser in research work for publication, please see the file CITATION for a reference to cite.

Sonic Visualiser was devised and developed up to release 4.2 in the Centre for Digital Music at Queen Mary University of London, primarily by Chris Cannam, with contributions from Christian Landone, Mathieu Barthet, Dan Stowell, Jesús Corral García, Matthias Mauch, and Craig Sapp. Special thanks to Professor Mark Sandler for initiating and supporting the project.

The 4.3 to 4.5 releases were developed by Chris Cannam at Particular Programs Ltd.

The 5.0 release was supported once again by the Centre for Digital Music at Queen Mary University of London.

If you would like to sponsor future general development of Sonic Visualiser, or if you need something specific and have funding available for it, please contact Particular Programs Ltd.

The bulk of the Sonic Visualiser code is

  • Copyright (c) 2005-2007 Chris Cannam
  • Copyright (c) 2006-2020 and 2024 Queen Mary University of London
  • Copyright (c) 2020-2023 Particular Programs Ltd

with a few exceptions as indicated in the individual source files.

Russian translation initially provided by Alexandre Prokoudine, updated by Sergey Kazorin, copyright 2006-2019 Alexandre Prokoudine and 2024 Sergey Kazorin.

Czech translation provided by Pavel Fric, copyright 2010-2019 Pavel Fric.

This work was partially funded by the European Commission through the SIMAC project IST-FP6-507142 and the EASAIER project IST-FP6-033902.

This work was partially funded by the Arts and Humanities Research Council through its Research Centre for the History and Analysis of Recorded Music (CHARM).

This work was partially funded by the Engineering and Physical Sciences Research Council through the OMRAS2 project EP/E017614/1, the Musicology for the Masses project EP/I001832/1, and the Sound Software project EP/H043101/1.

Sonic Visualiser is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. See the file COPYING included with this distribution for more information.

Sonic Visualiser may also make use of the following libraries:

  • Qt6 - Copyright The Qt Company, distributed under the LGPL
  • JACK - Copyright Paul Davis, Jack O'Quin et al, under the LGPL
  • PortAudio - Copyright Ross Bencina, Phil Burk et al, BSD license
  • Ogg decoder - Copyright CSIRO Australia, BSD license
  • MAD mp3 decoder - Copyright Underbit Technologies Inc, GPL
  • Opus decoder - Copyright Xiph.org and others, BSD license
  • libsamplerate - Copyright Erik de Castro Lopo, BSD license
  • libsndfile - Copyright Erik de Castro Lopo, LGPL
  • FFTW3 - Copyright Matteo Frigo and MIT, GPL
  • Rubber Band Library - Copyright Particular Programs Ltd, GPL
  • Vamp plugin SDK - Copyright Chris Cannam and QMUL, BSD license
  • LADSPA plugin SDK - Copyright Richard Furse et al, LGPL
  • RtMIDI - Copyright Gary P. Scavone, BSD license
  • Dataquay - Copyright Particular Programs Ltd, BSD license
  • Sord and Serd - Copyright David Robillard, BSD license
  • Redland - Copyright Dave Beckett and the University of Bristol, LGPL/Apache license
  • liblo OSC library - Copyright Steve Harris, GPL
  • Cap'n Proto - Copyright Sandstorm Development Group, Inc, BSD license

(Some distributions of Sonic Visualiser may have one or more of these libraries statically linked.) Many thanks to their authors.

Compiling Sonic Visualiser

If you are planning to compile Sonic Visualiser from source code, please read the relevant instructions:

These three platform builds are checked via continuous integration:

  • Linux CI build: Build Status
  • macOS CI build: Build Status
  • Windows CI build: Build Status

For notes on how to update and edit the UI translation strings, see TRANSLATION.md

More information

For more information about Sonic Visualiser, please go to

https://www.sonicvisualiser.org/

sonic-visualiser's People

Contributors

cannam avatar jleben avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sonic-visualiser's Issues

Wget can not fetch source code tarball on official website

For example:

$ wget https://code.soundsoftware.ac.uk/attachments/download/2580/sonic-visualiser-4.0.tar.gz

Get error:

Resolving code.soundsoftware.ac.uk (code.soundsoftware.ac.uk)... 138.37.95.184
Connecting to code.soundsoftware.ac.uk (code.soundsoftware.ac.uk)|138.37.95.184|:443... connected.
ERROR: cannot verify code.soundsoftware.ac.uk's certificate, issued by ‘CN=QuoVadis Europe EV SSL CA G1,O=QuoVadis Trustlink B.V.,C=NL’:
  Unable to locally verify the issuer's authority.
To connect to code.soundsoftware.ac.uk insecurely, use `--no-check-certificate'.

Please use Intermediate CA on the official website, the CA chain is incomplete.

Plugin Transforms with multiple output descriptors seen as separate plugin transforms

Hi
I made a plugin transform that compute 10 time series at once but sonic visualiser load it as 10 different transforms, so I have to click and re-run the plugin 10 times every time I want to see all the outputs of my transform.

Is there a way in sonic visualiser to run all the outputs generated by a transform at once ?

Thanks
Matthieu

Flatpak support

Thank you for the great software.
Would you consider releasing a flatpak version for simper installation across all Linux distributions?

include twice

main/PreferencesDialog.cpp (line 32) include (QMessageBox) also in line 28.

Request: Add Autosave feature

I was working on a file when a VAMP plugin crashed SV. I had forgotten to save the file and lost all the work I had done on it. I suggest adding an autosave feature similar to word processors so that the users aren't required to manually update the file to prevent losing their work due to a crash. My idea is that SV would not change the original file with autosave but would keep an updated copy, available to the user. Updating the original file would require a manual save.

allow disabling waveform interpolation

Hi there,

I would like to be able to disable waveform interpolation, because when analysing audio files, it hides the real start of the playback.

With a linear scale, I can at least zoom a lot and see that samples are actually at 0:

image

However, with the dB scale, which would be extremely useful to know when the file stopped being pure zeros, the interpolation makes it impossible to see where it actually started:

image

Cheers,

Arthur

Spectrum tracks mouse x-coord wrongly on (retina) Mac

The spectrum shows the wrong bin values at top-right when tracking the mouse pointer, on the Mac. Applies only when rendering in retina resolution - on non-retina Macs or when retina rendering is switched off, it behaves like the other platforms.

Request: Add key shortcuts for Tools

Please consider adding key shortcuts for Tools (Navigate, Select, Edit, Draw, Erase, Measure). I also suggest displaying the shortcut keys with the tool names, when you mouse over them in the toolbar, similar to how shortcuts keys are shown next to "Edit" menu commands.

Mazurka's PowerCurve output cannot be exported nor copied to clipboard

Using Sonic Visualiser 4.3 on Windows, tested with 64- and 32-bit versions.

It is not possible to export to CSV a layer generated by Mazurka's PowerCurve plugin, nor to copy it to clipboard . When exported, the resulting file is empty. When copied, it simply does not copy anything at all.

I tried modifying the layer data to see if there was any kind of specific values that triggered the issue, or the lack of labels, and even renaming the layer's name. It appears that there is something internal to the layer created by the PowerCurve plugin that Sonic Visualiser doesn't know how to deal with. It worked until some previous version (I worked with it about 10 years ago), so I suppose this to be a regression.

[Edit] Some additional info: I looked at the log file (%APPDATA%\sonic-visualiser\Sonic Visualiser\log\sv-debug.log), and there is no useful info, only [18276]/22276: ActivityLog: Export layer to "C:/Users/Josias/Desktop/test.csv". Also important is that, when exporting, if you check the option to add headers, the headers are exported, but no actual data.

OSC not available with default build

Hi, sorry for opening an issue here, but I couldn't find help in the manual.

I want to use OSC commands, but it seems OSC is not running. In the help->about menu i get "" instead of the URL

I am using the default build for windows 64bit downloaded from the site, version 4.0.1
Do I have to compile from scratch with the liblo OSC library? Or am I doing something wrong?

Many thanks for the great work though!

overwrite file: have to confirm twice (minor)

When saving session to an existing .sv file, I have to confirm twice that I want to overwrite that file

First the OS confirmation:
image

Then the Sonic Visualiser confirmation:
image

I guess such warnings could be handled only by the OS?

(MacOS 12.3.1 and Sonic Visualiser 4.5)

Imported annotation layer does not seems to scale frequency properly (from Boxes Layers)

Hi,
I generated a Boxes Layer to annotate signal min/max time and frequencies on the spectrogram Pane. Then Save the layer into a .txt or .csv file with coma as separator. Both time and frequency values in the exported "annotation layer" file fit does taken in the Boxes Layer. So no problem so far... But when I import back the annotation layer into Sonic, I cannot retrieve the frequency scale of my annotated boxes properly. Time axis is OK (probably because I can specify that this is indeed the time values in the "Select Data Format" menu), but the size of the boxes on the frequency axis are not scaled anymore. I can either use a log or linear scale, but not the original frequency scale from the spectrogram. I believe this is because there is no choice for frequency values in the "Select Data Format" menu. I can specify "Time", "End Time" and "Label" correctly, but my frequency values are probably taken as values without any meaning (which seems to be the only valid option), so that Sonic does not use this info to scale back the boxes to the original frequency scale. No matter if I change the scale to "Auto-Align" ("","Hz","v" etc.) or "Linear" or "Log", and although the frequency values annotated in my boxes are good, they do not scale anymore to the frequency axis. Is this a bug or am I missing something ? Thanks in advance for your time!

I can't import the annotation back from the txt file, back into the text layer while preserving the position of the labels

I use the text annotation layer, when exporting, a file is obtained where the start time is in the first column, the second level is relative to zero, then the text information itself goes. When importing such a file, anything is obtained, but not a text layer, with ANY combination of column recognition. It seems to me that the import system is not flexible enough, or I could not configure it correctly.

No microphone access on macOS Mojave

Environment

MacBook Pro Retina 13" Late 2013
First boot of macOS Mojave 10.14.2 (reluctantly updated after months so I can use std::variant / std::visit)
SV 3.2 - Default audio i/o settings (auto)

Repro

  1. Open SV, start an Empty Session
  2. Press Record
  3. Recording starts, signal is silent

Expected

  1. macOS prompts for microphone access
  2. Recording starts, signal represents real world

Hang on opening a second plugin parameter dialog

  1. Load audio
  2. Go the Transform menu and ask to run a transform
  3. When the plugin parameter dialog appears, ignore it and leave it open
  4. Go back to the Transform menu and ask to run a different transform

Result: hang

Sonic Visualiser process won't exit after closing the window

The Sonic Visualiser process does not exit after closing the window when it is still initializing on PC. To reproduce this issue:

  1. Install sonic visualiser 4.4, Windows 64 bit version from https://sonicvisualiser.org/download.html
  2. Open sonic visualiser. Before the splash window disappears, the main window will show up. Close the main window before the splash window disappears.
  3. The splash window will freeze and the sonic visualiser process will not exit automatically.

It can also be reproduced when "Show splash screen on startup" option is unchecked. To reproduce in this way:

  1. Open sonic visualiser. Close it in less than 1 second.
  2. The window is closed but the sonic visualiser process remains in the task manager, and will never exit.

Other information:

  1. The bug cannot be reproduced on sonic visualiser 4.0 using either method. Did not test on other versions yet.
  2. stderr shows nothing apart from the log Document::releaseModel(<none>) when this bug happens.

level scale

I read some therads about the 10 dB / 20 dB discussion. I simply cannot understand, why Sonic-Visualiser is having a wrong level scale, when you make a spectrogram. The factor of 10 in the term 10log A is only used, when power values are involved. But when you declare different audio signals you always provide digital values communicating with voltages. I have loaded a Stereo file with two levels of a (voltage-)factor of 10. And SV displays a distance of 10 dB, which is wrong! The right value is 20 dB, because we are having here a voltage factor of 10 in between, and the level distance is then 20log(10) = 20 dB. Every other program confirms this. Dieter
Level-Issue

Crash on opening two audio files, 1 x 96kHz and 1 x 44.1

In a session with a chromagram layer as part of the default template.

(gdb) run infinitewave.ca/Swept_float.wav sweep-log.wav 
[...]
ERROR: Document::setModel: Layer 0x555556995f70 ("Chromagram") wants to use unregistered model #3: register the layer's model before setting it!

Thread 1 "sonic-visualise" received signal SIGSEGV, Segmentation fault.
0x0000555555719a12 in TypedId<Model>::operator< (this=0x51, other=...) at ../svcore/base/ById.h:131
131             return untyped < other.untyped;
(gdb) where
#0  0x0000555555719a12 in TypedId<Model>::operator<(TypedId<Model> const&) const (this=0x51, other=...) at ../svcore/base/ById.h:131
#1  0x0000555555718f53 in std::less<TypedId<Model> >::operator()(TypedId<Model> const&, TypedId<Model> const&) const (this=0x5555568599b8, __x=..., __y=...)
    at /usr/include/c++/11.1.0/bits/stl_function.h:386
#2  0x00005555557a2fa1 in std::_Rb_tree<TypedId<Model>, std::pair<TypedId<Model> const, std::shared_ptr<Aligner> >, std::_Select1st<std::pair<TypedId<Model> const, std::shared_ptr<Aligner> > >, std::less<TypedId<Model> >, std::allocator<std::pair<TypedId<Model> const, std::shared_ptr<Aligner> > > >::_M_lower_bound(std::_Rb_tree_node<std::pair<TypedId<Model> const, std::shared_ptr<Aligner> > >*, std::_Rb_tree_node_base*, TypedId<Model> const&)
    (this=0x5555568599b8, __x=0x31, __y=0x5555568599c0, __k=...)
    at /usr/include/c++/11.1.0/bits/stl_tree.h:1903
#3  0x00005555557a22b8 in std::_Rb_tree<TypedId<Model>, std::pair<TypedId<Model> const, std::shared_ptr<Aligner> >, std::_Select1st<std::pair<TypedId<Model> const, std::shared_ptr<Aligner> > >, std::less<TypedId<Model> >, std::allocator<std::pair<TypedId<Model> const, std::shared_ptr<Aligner> > > >::find(TypedId<Model> const&) (this=0x5555568599b8, __k=...)
    at /usr/include/c++/11.1.0/bits/stl_tree.h:2521
#4  0x00005555557a1bc1 in std::map<TypedId<Model>, std::shared_ptr<Aligner>, std::less<TypedId<Model> >, std::allocator<std::pair<TypedId<Model> const, std::shared_ptr<Aligner> > > >::find(TypedId<Model> const&)
    (this=0x5555568599b8, __x=...)
    at /usr/include/c++/11.1.0/bits/stl_map.h:1170
#5  0x000055555579f1e9 in Align::addAligner(Document*, TypedId<Model>, TypedId<Model>) (this=0x5555568599a0, doc=0x5555566a6c20, reference=..., toAlign=...)
    at ../svapp/align/Align.cpp:104
#6  0x000055555579ef78 in Align::scheduleAlignment(Document*, TypedId<Model>, TypedId<Model>)
    (this=0x5555568599a0, doc=0x5555566a6c20, reference=..., toAlign=...)
    at ../svapp/align/Align.cpp:88
#7  0x00005555557e262c in Document::alignModel(TypedId<Model>, bool)
    (this=0x5555566a6c20, modelId=..., forceRecalculate=false)
    at ../svapp/framework/Document.cpp:1201
#8  0x00005555557df42d in Document::replaceModel(TypedId<Model>, TypedId<Model>) (this=0x5555566a6c20, oldModel=..., newModel=...)
    at ../svapp/framework/Document.cpp:594
--Type <RET> for more, q to quit, c to continue without paging--
#9  0x00005555557de437 in Document::setMainModel(TypedId<Model>)
    (this=0x5555566a6c20, modelId=...) at ../svapp/framework/Document.cpp:435
#10 0x00005555557f5f31 in MainWindowBase::addOpenedAudioModel(FileSource, TypedId<Model>, MainWindowBase::AudioFileOpenMode, QString, bool) (this=
    0x55555623c400, 
    source=..., newModel=..., mode=MainWindowBase::ReplaceMainModel, templateName=..., registerSource=true) at ../svapp/framework/MainWindowBase.cpp:1752
#11 0x00005555557f53f9 in MainWindowBase::openAudio(FileSource, MainWindowBase::AudioFileOpenMode, QString)
    (this=0x55555623c400, source=..., mode=MainWindowBase::ReplaceSession, templateName=...) at ../svapp/framework/MainWindowBase.cpp:1621
#12 0x00005555557f4603 in MainWindowBase::open(FileSource, MainWindowBase::AudioFileOpenMode)
    (this=0x55555623c400, source=..., mode=MainWindowBase::ReplaceSession)
    at ../svapp/framework/MainWindowBase.cpp:1514
#13 0x00005555557f400f in MainWindowBase::openPath(QString, MainWindowBase::AudioFileOpenMode)
    (this=0x55555623c400, fileOrUrl=..., mode=MainWindowBase::ReplaceSession)
    at ../svapp/framework/MainWindowBase.cpp:1455
#14 0x0000555555841525 in SVApplication::handleFilepathArgument(QString, SVSplash*) (this=0x7fffffffe270, path=..., splash=0x0) at ../main/main.cpp:641
#15 0x0000555555841310 in SVApplication::event(QEvent*)
    (this=0x7fffffffe270, event=0x5555566ec720) at ../main/main.cpp:608
#16 0x00007ffff6eba1a6 in QApplicationPrivate::notify_helper(QObject*, QEvent*)
    () at /usr/lib/libQt5Widgets.so.5
#17 0x00007ffff7cef16a in QCoreApplication::notifyInternal2(QObject*, QEvent*)
    () at /usr/lib/libQt5Core.so.5
#18 0x00007ffff7cefc69 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () at /usr/lib/libQt5Core.so.5
#19 0x00007ffff7d36548 in  () at /usr/lib/libQt5Core.so.5
#20 0x00007ffff567ef13 in g_main_context_dispatch ()
    at /usr/lib/libglib-2.0.so.0
#21 0x00007ffff56d50d9 in  () at /usr/lib/libglib-2.0.so.0
#22 0x00007ffff567c485 in g_main_context_iteration ()
    at /usr/lib/libglib-2.0.so.0
#23 0x00007ffff7d3a44a in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
--Type <RET> for more, q to quit, c to continue without paging--
#24 0x00007ffff7ce744b in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /usr/lib/libQt5Core.so.5
#25 0x00007ffff7cf2b97 in QCoreApplication::exec() ()
    at /usr/lib/libQt5Core.so.5
#26 0x0000555555840509 in main(int, char**) (argc=3, argv=0x7fffffffe3e8)
    at ../main/main.cpp:551
(gdb) 

Request: way to add new custom "panes"

It find it very useful to watch the spectrum pane as I drag the cursor across the time---this lets me visualize how the spectrum changes/evolves over time.

I would love to be able to do this with other transforms, in particular, the re-assigned spectrum, and the autocorrelation (and perhaps there are others).

I'm not sure how I would go about adding/coding new panes? It would seem possible to re-use most of what was done for the spectrum pane, i.e., computing the alternative transform, then changing what data is displayed and the scaling/labelling of the axes. It is something that I could perhaps work on, but I would need some pointers/guidance.

Anyway, I think it would be super useful to be able to add this type of thing.

Bails out on startup when invoked with "Open With..." in macOS Finder

When you (try to) use "Open With..." to open an audio file in SV 4.4 or 4.5 on macOS, the splash screen appears momentarily and then the application crashes.

The built-in report from the release build says it's a null pointer dereference - shown without an especially useful stack trace here, but I think the cause is that the application is being asked to process the file open event before the main window has been attached - the logic in main.cpp seems to support that interpretation.


Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000000
Exception Codes:       0x0000000000000001, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Termination Reason:    Namespace SIGNAL, Code 11 Segmentation fault: 11
Terminating Process:   exc handler [41138]

VM Region Info: 0 is not in any region.  Bytes before following region: 4367712256
      REGION TYPE                    START - END         [ VSIZE] PRT/MAX SHRMOD  REGION DETAIL
      UNUSED SPACE AT START
--->  
      __TEXT                      104560000-1051a0000    [ 12.2M] r-x/r-x SM=COW  ...ic Visualiser

Kernel Triage:
VM - pmap_enter failed with resource shortage
VM - pmap_enter failed with resource shortage
VM - pmap_enter failed with resource shortage
VM - pmap_enter failed with resource shortage
VM - pmap_enter failed with resource shortage


Thread 0 Crashed::  Dispatch queue: com.apple.main-thread
0   Sonic Visualiser              	       0x1048bc7c4 SVApplication::event(QEvent*) + 960
1   Sonic Visualiser              	       0x1048bc570 SVApplication::event(QEvent*) + 364
2   QtWidgets                     	       0x106897e24 QApplicationPrivate::notify_helper(QObject*, QEvent*) + 292
3   QtWidgets                     	       0x1068991ac QApplication::notify(QObject*, QEvent*) + 548

Reported by Greg M., with thanks.

(strange thing, error ?): i cant play only this song

i dont know maybe it's the setting problem or what ,..,...i am new user of sonic visualizer (it feels good to have this that exactly i need,...where i have been around this lifetime?)

i want to know john denver-country road, take home.... but the result like this,......

1

i dont know maybe the setting problem or not,..but i even try uninstall and install back,,,,and got same problem.....

meanwhile i try another song,..it runs perfectly good,...
2

ah 1 more,....i forgot which one the setting that could make the letter bigger like on the second picture that i boxed with red square,..i ever did that before but forgot where exactly the place,...(i have bad eye problem,..so i need big letter :) )

Playback cursor significantly of sync with audio

When playing back audio, the cursor is way out of sync with what you hear. It is very obvious with an audible time instants track, for example.

This happens with SV versions 4.1 and 4.2, but 4.0.1 works correctly. For me, the problem is so severe that 4.1 and 4.2 are unusable, and I have reverted to 4.0.1. I can attempt to provide screen recordings showing the problem if this is useful. I have C++ development experience (but not for several years) so I might be able to do some debugging in Visual Studio if I have access to symbols and source (ie, not building from scratch) if an experienced developer on this project has a specific debug scenario in mind.

I'm using Win x64, Windows 10 build 1909

Reload audio sources from disk

Hi Chris,

I mostly use Sonic Visualiser to open several multichannel files and compare their spectrums, time alignement etc. I often end up with several files, several layers, panes etc. These audio files are generated by other scripts so they have consistent filename from a script execution to another execution.

Question is: Is there a way to reload the multiple audio sources after modifying the files externally?

Workaround I found is to save it as session file, close SV, reopen, load that session which will them show the latest audio content. Having a button for that would be quite handy.

Anyway, thanks for the great software ! :)
Arthur

(v3.2.1 Win 32bit) Vamp plugins not detected anymore via environment variable?

Hi,

I recently updated SV from an older version to current v3.2.1 (32 bit version).
For the old version I've set an environment variable ('VAMP_PATH') for the Vamp plugins path as per here, because I prefer to install the plugins not in the default location (C:\Program Files\Vamp Plugins).
This worked fine with the old version, but with v3.2.1 the plugins are no longer detected.
Is the ability to detect plugins via setting plugins path in environment variable removed in v3.2.1 or am I doing something wrong?
(I've verified that the plugins in question are also 32 bit.)

Thanks.

request file info in statusbar or dialog

i could not find following information of current file anywhere:

  • sample format
  • bit depth

i would suggest to show this permanently at the right in the status bar,
probably together with the samplerate:
e.g. 192'000 Hz PCM 16-bit or 3'200'000 Hz IEEE 32-bit

please consider thousands separator for the samplerate
(i'm using with SDR files with up to multiple MHz samplerate)

Moving selection of time instances with "Edit" tool is inconsistent.

A very useful SV feature is being able to select two instances, to display their distance, and then adjust the first instance by enabling the "edit" tool, expanding/shrinking the selection, moving the front time instance where you want it in the process. However, in the latest version of SV (3.4), this does not occur for the ending time instant. Expanding/Shrinking the selection does not move the ending time instance.

Apple Silicon builds

Hello! Are there plans to provide either separate installer, or universal binary for Apple Silicon (macOS arm64)? I would be glad to help with that.

Tests don't pass on ppc64

I am building SV on ppc64le. Get stuck with AudioFileReaderTest.

Log of test included. Can give you some more information, if you want. I think this can be a problem for distros, which have packages for multiple arches,
sv1-log.txt

AAC/m4a support on Linux

Can't open AAC streams saved from videos in 4.4 version on Fedora 35. Would be nice to get them supported.

use 'testcase' for running tests rather than running them manually

this is a patch we've been carrying along in Debian for about 2 years now, in order to allow cross-compilation of sonic-visualiser.
it would be great if you could include it :-)

the original bug-report that triggered the patch can be found in the Debian Bug Tracker (with some explanation).

From b27540813b46d3240a43d3f136388919f4350e17 Mon Sep 17 00:00:00 2001
From: Helmut Grohne <[email protected]>
Date: Fri, 5 Aug 2022 19:51:11 +0200
Subject: [PATCH] honour DEB_BUILD_OPTIONS=nocheck

Origin: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=918718
Last-Update: 2019-01-11

---
 dataquay/tests/tests.pro | 13 +------------
 1 file changed, 1 insertion(+), 12 deletions(-)

diff --git a/dataquay/tests/tests.pro b/dataquay/tests/tests.pro
index fb6950e..9bd0082 100644
--- a/dataquay/tests/tests.pro
+++ b/dataquay/tests/tests.pro
@@ -1,6 +1,6 @@
 
 TEMPLATE = app
-CONFIG += debug console warn_on c++11
+CONFIG += debug console warn_on c++11 testcase
 QT += testlib
 QT -= gui
 TARGET = test-dataquay
@@ -40,14 +40,3 @@ exists(./platform.pri) {
 	include(../platform.pri)
     }
 }
-
-!win32 {
-    !macx* {
-        QMAKE_POST_LINK=$${DESTDIR}/$${TARGET}
-    }
-    macx* {
-        QMAKE_POST_LINK=./$${TARGET}.app/Contents/MacOS/$${TARGET}
-    }
-}
-
-win32:QMAKE_POST_LINK=$${TARGET}.exe
-- 
2.36.1

The Steinberg VST3 SDK is dual licensed

Excerpt from the download page:

VST, AudioUnits? Sonic Visualiser cannot support VST plugins directly because Steinberg's VST license is incompatible with Sonic Visualiser's GPL license.
Windows and OS/X users can get limited support using the Audacity VST Enabler, and Linux users can try dssi-vst.
There is no such problem with AudioUnit; we just haven't got around to supporting it yet.

This is misleading. The actual license of VST3 is BSD 3 clause for the public SDK, and dual licensed GPLv3 / Proprietary for the plugin interfaces.

https://github.com/steinbergmedia/vst3sdk

An implementation for a VST3 plugin is therefore possible, if there is an interest.

No settings for importing midi files

When importing midi sequences, I did not notice a tool for adjusting their beat. We have to scale them in other tools, which is not very convenient, I think it would be enough to multiply each by a certain coefficient, which would stretch them or narrow them relative to the timeline.

request two-sided dB-scale for waveform layer

currently, the waveform offers linear, dB and Meter -scale,
where dB is "The scale displacement is proportional to the log of the absolute voltage.",
as described in https://www.sonicvisualiser.org/doc/reference/4.5/en/#waveform
meaning y = 20 * log10( abs(voltage) )

i would suggest to replace or add the following:
y = sgn(voltage) * 20 * log10( abs(voltage) )

probably the same for Meter-scale.

related: the vertical zoom level does only shift the y-axis with dB-scale. i would prefer a zoom similar as with linear scale.
create an extra issue for this?

Misleading frame count at cursor

I have a WAVE file that is 3 seconds long (144000 smp @ 48kHz). If I open it (with Sonic Visualizer release 4.1 on Arch Linux) and move the cursor to the visual end, the frame count reads something like 143872, depending on zoom-level.

Even if I click "Fast Forward to End", the frame count is not 144000.

It would be nice, if I could trust the counter not only on file-beginning but also on file-end.

Request: Snap notes to beats or beat subdivisions

My issue is when I'm using the notes layer feature for transcribing things I find it very difficult to align my notes accurately. The vertical axis is fine because MIDI notes have discrete pitches, the problem is on the horizontal axis.

This could be solved by implementing optional note snapping when there's a time instants layer (produced by hand or a beat detection plugin) behind a notes layer, and allowing snapping to different subdivisions of those instants for transcribing 8th notes, 16th notes, triplets, etc. in a melody.

Mockup:

vokoscreen-2021-12-31_13-32-43.mp4

This is how I imagine note snapping could work when snapping set to a half-beat subdivision.

Not a real implementation on the screen capture, just a quick hammering on the note layer's code for shows. I'm not that familiar with SV's code base, no idea what would it take to implement this properly.

Request: Add "duplicate layer" to the Layers drop-down menu and the right-click options in the property boxes panel

Hello, When I am analyzing microrhythms (non-isochronous subdivisions of a beat), I like to create a time instant layer for each type of beat subdivision (triplets, quadruplets, quintuplets, sextuplets, septuplets, etc) to see where the hits approximately line up. I first mark the beat (using ";"), create a new new time instant layer, copy and paste the beat marks from the original layer into the new layer then under "Edit" select "subdivide selected instances" and choose the desired subdivision. I repeat these steps for each tuplet subdivision. It would save me a couple of steps, if I could just right-click on the beat marked layer in the property boxes panel on the right side, or under the Layer Menu, and select "Duplicate Layer". Perhaps, this Thanks, Sam

Documentation about i18n

I've tried to find some documentation regarding i18n and how to add a new language but I could not find it (in wiki, pull requests and issues). Is there any guide available I could take a look at? I'd like to contribute a little bit with this project. Thanks.

INSTALL.txt needs an update

Here is the output from ./configure:

ERROR: No supported SML compiler or interpreter found       

  The Repoint external source code manager needs a Standard ML (SML)
  compiler or interpreter to run.

  Please ensure you have one of the following SML implementations
  installed and present in your PATH, and try again.

    1. Standard ML of New Jersey
       - may be found in a distribution package called: smlnj
       - executable name: sml

    2. Poly/ML
       - may be found in a distribution package called: polyml
       - executable name: poly

    3. MLton
       - may be found in a distribution package called: mlton
       - executable name: mlton

    4. MLKit
       - may be found in a distribution package called: mlkit
       - executable name: mlkit

INSTALL.txt doesn't cover that yet.

Option to Embed Sound File into Sonic Visualizer Project.

There are some cases where I would like to embed the analyzed song directly into the sonic visualizer project. This would ideally be similar to the way blender, for instance, has options to bundle resources into the .blend filetype.

This would help for some song analysis where a song might be temporarily saved to disk, for instance.

Unable to export layer

Sorry to bother on this low activity forum but I see the Export Annotation Layer greyed out in the attached screenshot.What am I doing wrong?
Screenshot from 2022-02-05 16-58-18

Delete Shortcut does not work on Mac

In Catalina Mac OS, SV 4.3, hitting the delete key does not delete any selected time instances. In order to delete them, I have to use the top menu (Edit > Delete Selected Instances).

some way to pass the OSC port

SonicVisualiser currently listens on a random port for incoming OSC messages.

this makes it hard to use in automated environments (where you don't want to parse the printout on the splash-screen (or the stdout)).

how about adding an option --osc-port <num>, or even better --osc-url <URL>?
(of course, it is the user's responsibility to pick a port that is not already taken)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.