Giter Site home page Giter Site logo

gbd's Introduction

Generic Beat Detector (GBD)

The Generic Beat Detector (GBD) strives to deliver an industrial strength library and IoT framework for realtime beat detection (and soon other DSP analysis operations) for live music streams.

Description

GBD primarily consists of a library for music DSP analysis, and support plugins for audio signal routing between hosts.

GBD IoT Framework

This GBD release (v0.21) offers low-latency and realtime beat detection for live/playing music streams:

  • Bass beat (e.g. kick drum) detection (below 200Hz)
  • Detection of snare-like hits (between 3KHz and 10KHz)
  • Detection of cymbals-like sounds (above 15KHz)

Targeted Users

The GBD framework is primarily designed for the IoT maker industry and community. The target is to supply robust, industrial-strength realtime music beat detection (and soon other music DSP analysis) engines for makers working with commodity hardware and developing setups or products similar to, for example, the Philips Hue Disco framework.

Operation

The Raspberry Pi computer is used as the platform of choice for the GBD core given the board's popularity with the IoT maker community. The GBD core (PCM routing server and DSP library) is GNU/Linux based. The GBD client and/or audio applications may execute on a remote host which need not be a GNU/Linux system. This is discussed at greater depth in GBD Architecture.

Generalized GBD Arch

With realtime beat detection, as an audio stream is routed through the GBD framework, the GBD music DSP analysis library delivers beat counts to Linux POSIX SHM. The IoT maker can then use this information to synchronize the control of light bulbs/leds to the music's beats. Check this OpenGL LED emulation on Youtube. This beat detection mode is referred to as GBD Standard.

Bear in mind that while GBD's realtime beat detection is sturdy, it still requires some "compliance" on the part of the user if it is to function in the most generic manner possible, i.e. across the variety of music genres. For the best results, the quality of the music should be that of professional studio CD recordings: preferably WAV uncompressed PCM or, at least, an encoding by an industry-standard audio format converter. For example, pirated .mp3 downloads from the Internet (i.e. poorly encoded or transcoded formats) or amateur recordings are likely to produce unsatisfactory results. These issues are discussed more fully here.

Licenses

GBD

Released under the MIT license, GBD is partially open sourced. See GBD Releases and Directions.

Attribution/Infrastructure

The GBD DSP library employs KISS (Keep It Simple, Stupid) FFT which, by default, is released under a revised BSD license.

Documentation and Tutorials

Check the GBD wiki for resources on the GBD IoT framework, GBD HowTos, GBD maker guides, etc.

gbd's People

Contributors

generic-beat-detector 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

gbd's Issues

Java Maker Template

Dear GBD-Team,

Thanks for the interesting project! I would like to use the beat detection to control my lights via my Java application. Could you assist me, building a "maker-template" for Java? That would be awesome. As I understand the communication between gbdserver and the maker-template is done via in-memory communication. Is this also possible via TCP/UDP?

And it would be nice if you could show a way to use the line input for live beat detection. Which kind of sound device do you suggest for the raspberrypu?

Cheers and a happy new year!
Felix

Installation on RPI Zero W

Howdy, I came across this project looking for beat detection software to drive external devices, from what I can see I should be able to do this by reading the shared memory and driving things from that?

What I can't seem to do is get the project working at all on a RPI Zero W, running the latest raspbian-lite (Linux raspberrypi 4.14.98+ #1200 Tue Feb 12 20:11:02 GMT 2019 armv6l GNU/Linux).

Firstly, the wiki says I should run Makefile-arm-rpi to get the client working. That fails with the error 'gbdclient.c:16:28: fatal error: alsa/asoundlib.h: No such file or directory'. This was resolved by installing the 'libasound2' package which allows compilation. After this I tried to run 'sudo make Makefile install' but this failed with '/usr/lib/arm-linux-gnueabihf/alsa-lib/' and I couldn't find the package to fix it.

Next, I tried using the server which refused to start.

pi@raspberrypi:~/GBD $ ./gbdserver -p 7777
Illegal instruction
`

Help?

is it possible 'led' control convert to 'Sevor motor' control?

Hello, admin!

thank for your app.

I have some question about my IoT project using GBD application.
If i can modify GBD source code, is it possible 'led' control convert to 'Sevor motor' control?(maybe it possible)

I see 'GBD/maker-templates/gbd-gl.c' code it display beat through openGL right?
(== https://www.youtube.com/watch?v=1wmrO51TZqA&feature=youtu.be )

how can i control a GPIO pin?
I mean led control source code is open to other developer?

Record and stream to GBD

Hi

Thanks to your solution, I'm trying to build a system which records live sound and categorize signals(kick, snare, cymbals).
System works fine with a recorded wav files following your guide and now I'm trying to record.
Somehow it works using the following command

arecord -f cd | aplay -D gbd --period-size 1024 -v

The problem is latency. Is there any better solution you recommend to reduce latency?

Thank you.

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.