Coder Social home page Coder Social logo

ibsh / is_keyfinder Goto Github PK

View Code? Open in Web Editor NEW
321.0 22.0 52.0 3.2 MB

Musical key detection software for digital DJs, for Mac OSX and Windows, released under GPL v3

Home Page: www.ibrahimshaath.co.uk/keyfinder

C++ 95.02% C 1.38% QMake 3.60%

is_keyfinder's Introduction

KeyFinder is a tool for estimating the musical key of digital recordings, to
aid DJs in harmonic mixing. It's primarily developed as Mac software but I
try to maintain compatibility with Windows. Some users have reported success
in building for Linux.

KeyFinder began as my final project submission during an MSc in Computer Science
at Birkbeck, University of London. My project report, which documents its
algorithms in detail, is available along with a binary download at
www.ibrahimshaath.co.uk/keyfinder

Localisations are hosted at https://www.transifex.com/projects/p/is_keyfinder/

KeyFinder copyright 2011-2013 Ibrahim Sha'ath

is_keyfinder's People

Contributors

b0m0x avatar ibsh avatar locallycompactct 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  avatar

is_keyfinder's Issues

Occasional repaint error on Windows

This one leads to a crash.
QWidget::repaint: Recursive repaint detected
The bizarre thing is I'm not manually calling repaint. Ever. So this will be hard to fix I guess.

[Windows 7] Cannot import more than one file

Keyfinder crashes when trying to move more than one file (at the same time or one after another) into the gui, literal translation in braces

Problemsignatur:
Problemereignisname (name of the problem): APPCRASH
Anwendungsname (name of the app): KeyFinder.exe
Anwendungsversion (version of the app): 0.0.0.0
Anwendungszeitstempel (time stamp of the app): 4ead85b5
Fehlermodulname (name of the crashing module): QtGui4.dll
Fehlermodulversion (version of the crashing module): 4.7.4.0
Fehlermodulzeitstempel (time code of the crashing module: 4e5523d2
Ausnahmecode (exception code): c0000005
Ausnahmeoffset (exception offset): 001a7813
Betriebsystemversion (version of the os): 6.1.7601.2.1.0.768.3
Gebietsschema-ID (country id?): 1031
Zusatzinformation/additional information 1: 0a9e
Zusatzinformation/additional information 2: 0a9e372d3b4ad19135b953a78882e789
Zusatzinformation/additional information 3: 0a9e
Zusatzinformation/additional information 4: 0a9e372d3b4ad19135b953a78882e789

Hope that helps, thanks a lot though! This app is awesome!

WIN - v1.1.9: Writing Tags to some .mp4 files removes tags completely

Affected Version: KeyFinder v1.1.9 (Windows).

Problem:
When is_KeyFinder writes tags to .mp4 video files with the "mp41" COMPAT flag, it ends up completely removing the MP4 tag data.

Details:
The mp41 flag can be easily identified using "mp4file --list <file.mp4>" from the libmp4v2 utilities package:

# breakme@dev2 (~/brokenfiles): mp4file --list *.mp4

BRAND  COMPAT              SIZING  FILE
----------------------------------------------------------------------
mp42   isom,mp42           32-bit  2LC-FDAU-dirty.mp4
isom   isom                32-bit  JessM-PixPeep.mp4
isom   mp41                32-bit  LosRab-Tengo.mp4
isom   mp41                32-bit  LuisM-Y.mp4

Note: the file names above are links to the actual files, which you may use to test. Files with <mp42|isom> flags have no apparent issues in KeyFinder and are only included for comparison purposes.

To Reproduce:

  • Download either of the last 2 video files in the above list which have the mp41 COMPAT flag and unzip them.
  • Load them in KeyFinder v1.1.9 (Win), then click "Run Batch Analysis".

Result: There is no error reported by is_KeyFinder and key analysis will be performed correctly. However, tag metadata will be completely removed from those files.

Other info:

Mp3tag (Windows) does read/write tags to these files successfully. Editing the properties using Windows Explorer built-in functions also works properly.

The files in question play properly with Windows Media Player 12 (and of course, VLC).

Skip pre-tagged files?

Not totally simple. Could just skip over any file where chosen field has data, but that's not very smart.

Goertzel normalisation is wrong

Energy levels reported by the Goertzel spectral analyser are inconsistent; a new normalising function is required. Reread information on Goertzel gain profiles.

Crashes on some video files.

Crashing on avcodec_decode_audio3 (decoderlibav.cpp:143), but no exception is being thrown so it's hard to fail gracefully.

Deprecated libav functions

In decoderlibav.cpp:

Line 52: if(av_find_stream_info(fCtx) < 0){

av_find_stream_info is deprecated, should be replaced by avformat_find_stream_info(fCtx,NULL)

In main.cpp:

Line 104: avcodec_init();

avcodec_init() is deprecated (now part of avregister function)

iTunes XML support

Maybe. M3U may be enough and I imagine the iTunes schema changes from time to time.

Command Line interface?

First off, Sweet stuff! Do you have a donation link anywhere? I'd like to throw some money your way as this is simple and wonderfully built software. I'm a huge automation freak and I'd love to set up a script to run batch analysis of a directory. Do you have any plans to incorporate something like this?

Japanese filename tag reading and writing not supported.

Hi, first of all thank you for making this excellent application and making it open source.

There is a problem reading Tags on filenames which is japanese (or non ascii)
It still could run analysis on them fine, So I believe the problem is that you converted the filename to ascii while you are calling Taglib, so it's an invalid path on those with non-ascii filenames.

Windows 7 Ult (x64) - Appcrash on mp4 video analysis

I understand windows version is considered beta, but would really like to see this app become stable. It would be a major timesaver for mp4 video tagging. Let me know if you need help testing.

This happens with every mp4 video that I try to analyze:

Faulting application name: KeyFinder.exe, version: 0.0.0.0, time stamp: 0x4efe26af
Faulting module name: avcodec-53.dll, version: 0.0.0.0, time stamp: 0x4e873c4b
Exception code: 0xc0000005
Fault offset: 0x003bb9b7
Faulting process id: 0x2388
Faulting application start time: 0x01cce1420a5677cf
Faulting application path: C:\Program Files (x86)\KeyFinder-WIN\KeyFinder.exe
Faulting module path: C:\Program Files (x86)\KeyFinder-WIN\avcodec-53.dll
Report Id: 58d1af98-4d35-11e1-a43a-00248caf3eaf

I have installed the missing deps listed on your wiki.

machine specs: Core i7 975x @3.33, Win7 (x64) sp1, 12gb ddr3 1666, nvidia gtx 285, asus p6t.

Also, Is there a live binary snapshot at all for windows version?

Options for improving batch parallelisation

First idea is to return to QtConcurrent.
If I collect the various results of an analysis into a single result set object (a bunch of it could be null for a batch job) that takes care of the current signals implementation.
I can then use mapped to iterate over a container (QStringList of url strings? or just QList of QUrls?), returning this resultset, assuming that the QFuture it returns is cancellable. Otherwise not much good for batch jobs.

All of this will need measuring for CPU load and time taken. Start a branch for it and see how it goes.

Occasional startTimer error on Windows

App output sometimes inclues:
QObject::startTimer: timers cannot be started from another thread
when files are dragged onto window. Must be something to do with QtConcurrent tag reader. Maybe I should refactor that.

Feature: Load iTunes playlists from within GUI

Probably pretty straightforward, if the Library XML coughs them up. Start with hardcoded default paths for Mac and Win but allow the user to specify a different library (in a new Preferences tab?).

Other questions:

  • what to do with the default ("drag and drop"?) list when viewing a playlist? Store in memory, or on disk, or simply blank it with a notification?
  • how to handle choosing a list in the UI? On the Mac it feels like a drawer would be most appropriate, but if that won't translate to Windows it may need to be a second tablewidget. I suppose the most space efficient approach would be to use a combo box but it's susceptible to accidental mousewheeling.

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.