Giter VIP home page Giter VIP logo

spek-alternative's Introduction

Spek

Spek is an acoustic spectrum analyser written in C and C++. It uses FFmpeg libraries for audio decoding and wxWidgets for the GUI.

Spek is available on *BSD, GNU/Linux, Windows and Mac OS X.

Find out more about Spek on its website: http://spek.cc/

Spek 0.8.2.3 - Released 2017-12-08

New Features And Enhancements

Spek 0.8.2.3 is a fork of the original Spek.

New features since 0.7:

  • Adjustable spectral density range (#4).
  • Switched from GTK+ to wxWidgets for better Windows and OS X integration.
  • Single .exe version for Windows.
  • Added translations in 11 more languages (totalling 19).
  • Open .opus audio files (#39).

Enhancements:

  • Switched to .xz tarballs.
  • Split out libspek and added unit tests.
  • 24-bit APE support (upstream fix).
  • Better toolbar icons on Windows and OS X (#21).
  • Installer options for app shortcuts on Windows (#1).
  • Associate with audio/video files on OS X (#2).
  • Online manual (#24).
  • Use non-deprecated FFmpeg decoding API.
  • Moved downloads to Google Code since GitHub no longer offers downloads (#38).
  • Compatibility with retina-based Macs (#32).

Bugfixes:

  • Fixed crash when the preferences file is not writable.
  • Fixed crash when the home directory is not writable.
  • Fixed duration and rendering for some video files.
  • Fixed compilation with newer FFmpeg and libav versions.
  • Proper handling of Unicode file names under Windows (upstream fix).
  • Don't lock the input file on Windows (#26).
  • Fixed mapping of the spectral density into the palette.
  • Fix magnitude calculation for the first and the last frequency band.
  • Support planar sample formats (#44).

Sources / Packages

Spek 0.8.2 tarball:

Windows and Mac OS X binaries:

Unix packages:

Dependencies

  • wxWidgets >= 2.8
  • A recent version of FFmpeg or libav

spek-alternative's People

Contributors

alexkay avatar alienyd avatar cjwatson avatar danielhams avatar doezer avatar ensonic avatar fabiand avatar flz avatar giuped avatar kuratsunade avatar lioncash avatar lommelun avatar meixome avatar minotaur-0 avatar piotrdrag avatar qpkqkma avatar rudis avatar sfan5 avatar sushidude avatar tanzoniteblack avatar theel0ja avatar tnorth avatar tomy91 avatar trinaldi avatar wbolster avatar withmorten 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

spek-alternative's Issues

Building with `wxWidgets-gtk3`?

wxWidgets provides wx-config which is required to build spek-alternative as seen here. But the binary supplied by wxWidgets-gtk3 is named wx-config-gtk3 and trying to build spek-alternative with wxWidgets-gtk3 fails because it isn't looking for the correct file.

How would I build this with wxWidgets-gtk3?

Thanks for reading this. :)

Fails to build against ffmpeg-5.0

This code uses a deprecated ffmpeg API which results in errors when compiling against ffmpeg>=5.0.

spek-audio.cc: In constructor 'Audio::Audio()':
spek-audio.cc:63:5: error: 'av_register_all' was not declared in this scope
   63 |     av_register_all();
      |     ^~~~~~~~~~~~~~~
spek-audio.cc: In destructor 'Audio::~Audio()':
spek-audio.cc:69:5: error: 'av_lockmgr_register' was not declared in this scope
   69 |     av_lockmgr_register(nullptr);
      |     ^~~~~~~~~~~~~~~~~~~
  CXX      libspek_a-spek-utils.o
spek-audio.cc: In member function 'std::unique_ptr<AudioFile> Audio::open(const string&, int)':
spek-audio.cc:114:49: error: invalid conversion from 'const AVCodec*' to 'AVCodec*' [-fpermissive]
  114 |             codec = avcodec_find_decoder_by_name("mp1float");
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
      |                                                 |
      |                                                 const AVCodec*
spek-audio.cc:117:49: error: invalid conversion from 'const AVCodec*' to 'AVCodec*' [-fpermissive]
  117 |             codec = avcodec_find_decoder_by_name("mp2float");
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
      |                                                 |
      |                                                 const AVCodec*
spek-audio.cc:120:49: error: invalid conversion from 'const AVCodec*' to 'AVCodec*' [-fpermissive]
  120 |             codec = avcodec_find_decoder_by_name("mp3float");
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~
      |                                                 |
      |                                                 const AVCodec*
spek-audio.cc:123:49: error: invalid conversion from 'const AVCodec*' to 'AVCodec*' [-fpermissive]
  123 |             codec = avcodec_find_decoder_by_name("mp3adufloat");
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
      |                                                 |
      |                                                 const AVCodec*
spek-audio.cc:126:49: error: invalid conversion from 'const AVCodec*' to 'AVCodec*' [-fpermissive]
  126 |             codec = avcodec_find_decoder_by_name("mp3on4float");
      |                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
      |                                                 |
      |                                                 const AVCodec*
spek-audio.cc:129:41: error: invalid conversion from 'const AVCodec*' to 'AVCodec*' [-fpermissive]
  129 |             codec = avcodec_find_decoder(codecpar->codec_id);
      |                     ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~
      |                                         |
      |                                         const AVCodec*
spek-audio.cc: In constructor 'AudioFileImpl::AudioFileImpl(AudioError, AVFormatContext*, AVCodecContext*, int, const string&, int, int, int, int, int, double)':
spek-audio.cc:222:33: warning: 'void av_init_packet(AVPacket*)' is deprecated [-Wdeprecated-declarations]
  222 |     av_init_packet(&this->packet);
      |                                 ^
In file included from /usr/include/libavformat/avformat.h:316,
                 from spek-audio.cc:4:
/usr/include/libavcodec/packet.h:506:6: note: declared here
  506 | void av_init_packet(AVPacket *pkt);
      |      ^~~~~~~~~~~~~~
--
spek-audio.cc: In member function 'virtual int AudioFileImpl::read()':
spek-audio.cc:273:23: error: 'avcodec_decode_audio4' was not declared in this scope; did you mean 'avcodec_decode_subtitle2'?
  273 |             int len = avcodec_decode_audio4(
      |                       ^~~~~~~~~~~~~~~~~~~~~
      |                       avcodec_decode_subtitle2

Status update?

What is the status of this repo now? I've seen new activity on the original Spek repo. Is this one from fresh upstream? Will these changes be eventually merged there? The releases and README for this GitHub repo hasn't been updated for years, yet I see activity under commits.

Can't build on linux

...with error

error: AM_GNU_GETTEXT_VERSION or AM_GNU_GETTEXT_REQUIRE_VERSION is used, but not AM_GNU_GETTEXT

and several warnings

configure.ac:11: warning: The macro `AC_PROG_LIBTOOL' is obsolete.

Not sure it is actual problem though... I'm on archlinux and it may be troubles with recent changes of wxgtk package.

Fixing Spek for 4k displays

I use 200% zoom when using windows on a 4k display. It would be nice to see the text and the hud be readjusted for such changes.

Capture

Save spectrum config

can you add a file or something where the spectrum preferences (max dB, min dB, color palette, etc) are saved, to save time instead of configuring it each time you open the program ("feature")

Flatpak

Hello, are there plan to a flatpak build? Please, I need the app and I use Endless OS, I just can install flatpaks from flathub.

Building from git on unix / linux / ubuntu

For Unix you link to:
https://github.com/withmorten/spek-alternative/blob/master/INSTALL.md#bsd-and-gnulinux

That has directions for the original repository, which has not been updated in forever, yours is now for all purposes the goto spek repository.

here are up to date instructions that I used to build from git on my Ubuntu 18.04 system:

sudo apt-get install ffmpeg autopoint intltool libwxgtk3.0-dev libavcodec-dev libavformat-dev
git clone https://github.com/withmorten/spek-alternative
cd spek-alternative
./autogen.sh
make
sudo make install

Command line

Hi,

This is not an issue, just a question. Is it possible to add a command line support?

The main functionality that I'm missing is to be able to save the result in PNG directly through the command line.

Linux binary?

Hello, thanks for reviving Spek!.. Could you kindly provide a Linux binary? No need for multiple distro-specific binaries, just one static build or an AppImage file. Alternatively make a Flatpak (see #8)

Numerical values?

Is it possible to modify spek so that it produces numerical values in stdout that could be used to calculate the frequency threshold (bandwidth) in various codecs?

metadata/headers are affecting the look of the spectrograms

bug was produced using mac version 0.8.2.3

putting 2 identical mp3s with different metadata into spek produces 2 slightly different looking spectrograms, even when the underlying audio data is identical. (i stripped away the metadata of both files and they had matching md5 hashes. the spectrograms also matched perfectly when their metadata was removed)

File A

original mp3 (metadata mistakenly showed a duration of 74:33:55 when it was really 2:40)

original file  169FBB88 mp3

File B

original mp3 -> metadata modified by mpTrim to show the correct duration which is 2:40 (underlying audio data of B is still identical to A)

header fixed w mpTrim  A76C57E3 mp3

File C

original mp3 -> metadata cleared with TagStripper
or
original mp3 -> metadata modified by mpTrim -> metadata cleared with TagStripper

the spectrograms i got from spek for A and B were different, yet the filesizes were very similar, so i cleared the metadata of both files using TagStripper. the 2 resulting files with cleared metadata had identical md5 hashes, so basically they were the same file. thus, the underlying audio data of A and B must also have been the same

metadata cleared  2D5B0B31 mp3

also curious was that neither A nor B's spectrogram matched up with C's. this feels like a pretty widespread bug that should be easy to duplicate

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.