Giter VIP home page Giter VIP logo

rambajz's Introduction

Rambajz

A simple FFT-based tuner and spectogram.

Compiling

Rambajz needs SDL2, SDL2_ttf and JACK development files to compile.

To build Rambajz, simply run make. It is possible to customise the default build flags either by passing them as a command line argument to make (e.g., make C=clang), or by putting them in Makefile.local.

Usage

Before running Rambajz, ensure the JACK audio server is active. To run Rambajz, run build/rambajz from the project root.

By default, Rambajz tries to connect to all physical input ports (more specifically, all JACK ports matching the regex system:capture.*). You can pass an alternative regex as the first argument to build/rambajz.

The top of the application window contains a tuning bar showing the detected dominant frequency (on the right) and the tone corresponding to it (on the left), along with its deviation from the standard tuning in cents.

The rest of the application window displays a spectogram of the recorded data. The vertical red line marks the found dominant frequency. The spectogram shows the frequency response in the range (20 Hz, [jack sample rate] / 2). It uses a logarithmical scale, meaning for example that every two notes separated by an octave are the same distance apart.

Simple movement and zooming of the spectogram's viewport is supported: either use the touchpad, or J/K to zoom in/out and H/L to move left/right. The dominant frequency is only calculated from the current viewport.

The spectral analysis is done using a simple implementation of FFT which runs in O(N log N). A custom mode in which the Fourier transform is done in a naive way separately for each frequency of interest is also available. Pressing D toggles between the two modes. The advantage of the latter mode is that while the FFT samples the same set of frequency bins for each frame regardless of the viewport, in the custom mode the frequencies of interest are chosen so that they span the current viewport equally (as seen by the user -- i. e. accounting for the logarithmic scale).

To exit the application, press Q, Escape, or close the window.

rambajz's People

Contributors

richardhladik avatar

Watchers

 avatar

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.