Git Product home page Git Product logo

drum_groove_archive's Introduction

Drum-Groove extraction

We did a hackday at IDMT yesterday. This is what I did so far ...

Steps

Exploration

  • write a wrapper for pyguitarpro to parse a collection of > 50,000 Guitar Pro files (gp3, gp4, gp5)
  • extract subpatterns of 1 bar length
  • quantize to 16th note grid
  • focus on songs in 4/4 time signature
  • map drum instruments to 3 classes
    1. hi-hat / cymbals
    2. snare drum
    3. bass drum
  • convert each bass loop (3 x 16 bits) into int64 integer
  • parse all songs and collect patterns that occur more than once
  • in total we have 8,8 mio bars so far (that's not all!)

alt text

  • Some weird patterns (16th note sequences)
  • Proof-of-concept as we observe many cliché patterns (also as shifted versions)
  • patterns need at least 8 notes (all others are filtered out beforehand)

Generation

  • take first 10,000 bars
  • train Recurrent Neural Network (very simple, one LSTM layer, 256 units) to predict current bar of drum track from previous 10 bars
  • here's a sequence of prediction (still not very interesting but something is happening ;)

alt text

Future steps / ideas

  • t-SNE visualization of patterns connected with audio playback (like this here: https://experiments.withgoogle.com/ai/drum-machine)
  • train a DC-GAN for generation (this should also cope with the cyclic shifts in the patterns)
  • encode bass track as well
    • harmony estimation per bar from other instrument tracks
    • encode pitches as chordal diatonic pitch class
  • use different grid that includes triple tatums (e.g. 48)
  • or: estimate local tatum per beat (like Frieler's Flex-Q algorithm)
  • improve RNN
    • check word-2-vec (Karpathy)
    • check negative sampling
  • use embeddings to avoid one-hot-encoding with > 1000 classes

drum_groove_archive's People

Contributors

jakobabesser avatar

Stargazers

Sviatoslav Abakumov avatar

Watchers

James Cloos avatar  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.