Code Monkey home page Code Monkey logo

aurals's Introduction

Aurals

Engine for music and voice analysis, and music creation. There is a hope to extend it into music therapy applications.

This application was developed with Qt 5.15.2 using QML. Tested on linux/android/windows.

Current status is pre-alpha, no releases yet. Most of components yet build to the stage 'proof of concept', when all types of components would be fullfilled there would start work to complete them all.

Code from this project was used to write an article:

https://habr.com/ru/post/672600/

Features

  • Audio recording, audio playing (from file or recorder)
  • MIDI files loading, saving, generating (several effects functions migrated from guitar tablatures)
  • Audio generation from MIDI files using soundfonts
  • Feature extration: root mean square, F0, F0 to midi, mean, median, mode, range, peaks finder
  • Audio qml component, to explore sound using root mean square, with start\end note peaks finder and F0
  • Spectrograph component using fast fourier transform with various parameters
  • Possible noise detection in fft window (yet very plain)
  • STFT computation and visualization
  • Constant-Q computation and visualization
  • Cepstrum calculation
  • Autocorrelation visualization and YIN algorithm visualization
  • Tapping componet, to tap rhythm using mouse\mobile device screen with export to midi\pcm
  • Piano roll component - to load and edit midi files
  • Pattern input - a way to fast write drums, polyrithm option included
  • Guitar tablature components - to view and edit guitar tabs
  • QML logger component - to read logs on mobile screen (or without running application from command line)

Application contains several soundfonts and midi files to check functionality, Implemented test to detect MIDI files regression.

Screenshots

Wave view and spectrograph:

mtherapp screenshot

Wave view claps start end detection (blue is start, red is end):

mtherapp screenshot

Wave view with f0 diplay (red line below)

mtherapp screenshot

Short time fourier transform:

mtherapp screenshot

Constant-Q transform:

mtherapp screenshot

Autocorelation and Yin visualization:

mtherapp screenshot

Filters comparison visualization (yet only low and high pass + both):

mtherapp screenshot

Cepstrum visualization:

mtherapp screenshot

Most of the visualization could be saved as image.

To access all types of audio analysis there is a simple recorder:

mtherapp screenshot

There is midi player based on sound fonts:

mtherapp screenshot

There is tapping function, that lets you tap rhythm on screen, and save it to pcm or midi:

mtherapp screenshot

And there is tablature editor\viewer, yet in development:

mtherapp screenshot

Piano roll, to load and edit midi files, yet no all the functions like velocy supported:

mtherapp screenshot

Pattern input lets you write drum tracks fast, it has a polyrithm option, that lets you write different drum instuments with different bar sizes, PI will calculate when bar sizes converge and generate midi\wav:

mtherapp screenshot

Libraries

Project uses several libraries:

  • TinySoundFont

https://github.com/schellingb/TinySoundFont

  • FFTReal (tiny tweaked)

https://github.com/cyrilcode/fft-real

  • KISS fft

https://github.com/mborgerding/kissfft

  • Constant-Q Library (tweaked for float samples)

https://code.soundsoftware.ac.uk/projects/constant-q-cpp

  • DSP IIR realtime filter library

https://github.com/berndporr/iir1

  • Wavelib - wavelet library (currently turned off, but library is in the repo)

https://github.com/rafat/wavelib

All libraries have permissive license, that help use same type of license for this project.

Icons

All icons used in current version are taken from icons8 site!

Current status

Project is suspended because lack of resourses, but this would not last forever (I hope).

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.