{"id":13430848,"url":"https://github.com/adamstark/Gist","last_synced_at":"2025-03-16T06:31:28.079Z","repository":{"id":18043785,"uuid":"21090067","full_name":"adamstark/Gist","owner":"adamstark","description":"A C++ Library for Audio Analysis","archived":false,"fork":false,"pushed_at":"2021-09-18T01:26:17.000Z","size":961,"stargazers_count":359,"open_issues_count":0,"forks_count":74,"subscribers_count":26,"default_branch":"master","last_synced_at":"2024-05-16T12:57:33.958Z","etag":null,"topics":["audio","audio-analysis","c-plus-plus","fft","gist","mfcc","mir","music","music-information-retrieval","onset-detection","pitch-tracking","spectral-analysis"],"latest_commit_sha":null,"homepage":"http://www.adamstark.co.uk/project/gist/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/adamstark.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-06-22T09:27:59.000Z","updated_at":"2024-05-06T11:47:41.000Z","dependencies_parsed_at":"2022-08-25T13:51:04.064Z","dependency_job_id":null,"html_url":"https://github.com/adamstark/Gist","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamstark%2FGist","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamstark%2FGist/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamstark%2FGist/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/adamstark%2FGist/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/adamstark","download_url":"https://codeload.github.com/adamstark/Gist/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":221656435,"owners_count":16858769,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["audio","audio-analysis","c-plus-plus","fft","gist","mfcc","mir","music","music-information-retrieval","onset-detection","pitch-tracking","spectral-analysis"],"created_at":"2024-07-31T02:00:58.376Z","updated_at":"2024-10-27T09:31:00.651Z","avatar_url":"https://github.com/adamstark.png","language":"C++","funding_links":[],"categories":["C++"],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\u003cimg src=\"images/header.png\"\u003e\u003c/div\u003e \n\nGist - An Audio Analysis Library\n==================================\n\n\u003c!-- Version and License Badges --\u003e\n![Version](https://img.shields.io/badge/version-1.0.7-green.svg?style=flat-square) \n![License](https://img.shields.io/badge/license-GPL-blue.svg?style=flat-square) \n![Language](https://img.shields.io/badge/language-C++-yellow.svg?style=flat-square) \n\nGist is a C++ based audio analysis library\n\nAuthor\n------\n\nGist is written and maintained by Adam Stark.\n\n[http://www.adamstark.co.uk](http://www.adamstark.co.uk)\n\nUsage\n-----\n\nFirstly, import the Gist header file:\n\n\t#include \"Gist.h\"\n\t\n##### Instantiation\t\n\nGist is a template class, so instantiate it with floating point precision:\n\n\tint frameSize = 512;\n\tint sampleRate = 44100;\n\n\tGist\u003cfloat\u003e gist (frameSize, sampleRate);\n\t\nOr with double precision:\n\n\tGist\u003cdouble\u003e gist (frameSize, sampleRate);\n\nWe proceed with the documentation as if we were using floating point precision.\n\n##### Process Audio Frames\t\t\n\nOnce you have an audio frame, pass it to the Gist object. You can do this either as a STL vector:\n\t\n\tstd::vector\u003cfloat\u003e audioFrame;\n\t\n\t// !\n\t// fill audio frame with samples here\n\t// !\n\t\n\tgist.processAudioFrame (audioFrame);\n\t\nOr, as an array:\n\n\tfloat audioFrame[512];\n\t\n\t// !\n\t// fill audio frame with samples here\n\t// !\n\t\n\tgist.processAudioFrame (audioFrame, 512);\n\t\nNow we can retrieve some audio features.\n\t\n##### Core Time Domain Features\n\t\n\t// Root Mean Square (RMS)\n\tfloat rms = gist.rootMeanSquare();\n\t\n\t// Peak Energy\n\tfloat peakEnergy = gist.peakEnergy();\n\t\n\t// Zero Crossing rate\n\tfloat zcr = gist.zeroCrossingRate();\n\t\n##### Core Frequency Domain Features\n\t\n\t// Spectral Centroid\n\tfloat specCent = gist.spectralCentroid();\n\t\n    // Spectral Crest\n    float specCrest = gist.spectralCrest();\n    \n    // Spectral Flatness\n    float specFlat = gist.spectralFlatness();\n    \n    // Spectral Rolloff\n    float specRolloff = gist.spectralRolloff();\n    \n    // Spectral Kurtosis\n    float specKurtosis = gist.spectralKurtosis();\n\n##### Onset Detection Functions\n    \n    // Energy difference\n    float ed = gist.energyDifference();\n    \n    // Spectral difference\n    float sd = gist.spectralDifference();\n    \n    // Spectral difference (half-wave rectified)\n    float sd_hwr = gist.spectralDifferenceHWR();\n    \n    // Complex Spectral Difference\n    float csd = gist.complexSpectralDifference();\n    \n    // High Frequency Content\n    float hfc = gist.highFrequencyContent();\n    \n##### FFT Magnitude Spectrum\n\n\t// FFT Magnitude Spectrum\n\tconst std::vector\u003cfloat\u003e\u0026 magSpec = gist.getMagnitudeSpectrum();\n\t\n##### Pitch\n\n\t// Pitch Estimation\n\tfloat pitch = gist.pitch();\n\n##### Mel-frequency Representations\n\n\t// Mel-frequency Spectrum\n\tconst std::vector\u003cfloat\u003e\u0026 melSpec = gist.getMelFrequencySpectrum();\n\t\n\t// MFCCs\n\tconst std::vector\u003cfloat\u003e\u0026 mfcc = gist.getMelFrequencyCepstralCoefficients();\n\t\n\t\t\nVersion History\n---------------\n\n=== 1.0.7 === (18th September 2021)\n\n* Automated builds on all major platforms\n\n=== 1.0.6 === (21st October 2020)\n\n* CMake support\n* Python module moved to Python 3\n\n=== 1.0.5 === (29th February 2020)\n\n* Fix for compilation error on Windows\n* Fixed lots of warnings\n* Update to code style\n\n=== 1.0.4 === (22nd January 2017)\n\n* Small changes to the interface for MFCCs and Mel Spectrum\n* Many internal improvements\n* Added window functions\n\n=== 1.0.3 === (17th June 2016)\n\n* Added a Python module\n* Added ability to set and get sampling frequency\n* Bug fixes and implementation improvements\n\n=== 1.0.2 === (24th April 2016)\n\n* Added the option of using Apple Accelerate FFT\n* Added two new features: Spectral Rolloff and Spectral Kurtosis\n* Small usability and code style tweaks\n\n=== 1.0.1 === (26th June 2014)\n\n* Added the option of using Kiss FFT instead of FFTW\n\n=== 1.0.0 === (22nd June 2014)\n\n* The first version of Gist\n\nDependencies\n------------\n\nThe Gist library depends on one of the following FFT libraries:\n\n* [FFTW](http://fftw.org) \n\nYou will need to install this yourself, link projects using -lfftw3 and use the flag -DUSE_FFTW\n\n* [Kiss FFT](http://kissfft.sourceforge.net/) - included with project\n\nThis is included with the project. To use Kiss FFT, add the flag -DUSE_KISS_FFT\n\n* [Apple Accelerate FFT](https://developer.apple.com/library/ios/documentation/Performance/Conceptual/vDSP_Programming_Guide/UsingFourierTransforms/UsingFourierTransforms.html)\n\nTo use Accelerate FFT, add the flag -DUSE_ACCELERATE_FFT\n\nLicense\n-------\n\nCopyright (c) 2014 Adam Stark\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, either version 3 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program.  If not, see \u003chttp://www.gnu.org/licenses/\u003e.\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadamstark%2FGist","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadamstark%2FGist","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadamstark%2FGist/lists"}