GithubHelp home page GithubHelp logo

eozd / libreguitar Goto Github PK

View Code? Open in Web Editor NEW
7.0 2.0 1.0 291 KB

Guitar fretboard teacher app that recognizes notes played on a guitar through the sound interface or microphone.

License: GNU General Public License v3.0

Rust 99.61% Dockerfile 0.23% Shell 0.16%
guitar fretboard music music-theory application trainer exercise teaching audio audio-analysis

libreguitar's People

Contributors

eozd avatar tatp22 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

tatp22

libreguitar's Issues

Consider separating audio thread to multiple threads

Currently signal reading from audio device and audio processing is done on the same thread. This causes the thread to miss some audio blocks on systems with slow CPUs, as the audio processing is being performed synchronously. We might instead perform the audio processing on a separate thread so that we don't miss any parts of the input signal.

Distribute Linux application as Flatpak image

Release pipeline should create flatpak images for linux binaries. Further, we can create multiple binaries for linux, one with GUI and one without. Considering the amount of dependencies the GUI component pulls in, this might result in compact CLI binaries.

Implement logging

We need logging capabilities to log errors/missed frames/etc. Writing to STDERR should suffice for the moment.

Improve game visualization flow

  • Show guitar fretboard (either on console or on the frame buffer).
  • Ask the note to be played on a specific string (asking for the specific octave is not very useful)

Frequency detection has poor performance on lower frequencies

Frequency detection seems to not work so well on lower frequency ranges. This might be due to the wrong usage of rustfft library. The main reason for this argument is that the same detection algorithm seems to have almost perfect accuracy with its previous Python implementation.

GameLogic should wait for the target note asynchronously

The part in GameLogic main loop where the code waits for the target note to be detected sufficiently many times by the analyzer blocks the GameLogic thread. This part might be better done

  • either on a separate thread
  • or via non-blocking calls.

Enable ASIO Support on Windows

#45 enables Windows builds for libreguitar. However, ASIO support is currently disabled for reasons discussed in the MR description. We should enable it once the issues are resolved.

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.