GithubHelp home page GithubHelp logo

goznalo-git / markovplaystheguitar Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 734 KB

Fun little project, the generation of guitar tablatures from random walks on Markovian chains previously trained with .gp5 data.

License: GNU General Public License v3.0

Jupyter Notebook 98.97% Python 1.03%
guitar-tabs markov-chain networkx python random-walk

markovplaystheguitar's Introduction

Markovian walks on guitar tablatures

This project consists on the automatic generation of tablatures for guitar using Markov chains obtained by the accumulation of other already existing tablatures. These Markov chains can then be traversed, finding the resulting tablatures.

The current status of this project is: despite the caveats (see below), it does not take too much effort to generate the Markov chain associated to a series of .gp5 files, provided they have a single track. Random walks and their corresponding tabs are more straightforwardly implemented. Therefore, I would say this is ``usable''.

Note: There are still many caveats (note dynamics, lengths, effects, silences) and things to improve. In any case, this should serve as an inspiration to a musician rather than written-in-stone melodies.

Organization

The code is currently structured in notebooks (yes, I know this is far from optimal, at some point I will refactor it).

There are three "development" ones

  • DataInspection.ipynb can be used to probe a single dataset, displaying some relevant information (number of tracks, keys, beats, etc)
  • MarkovChains.ipynb contains the functions used to create the Markovian chains (both the standard and memory-aware ones)
  • RandomWalks.ipynb defines functions to traverse the chain, which can then be used to print their corresponding tabs

There is one batch processing notebook

  • Process_datasets.ipynb reads the files in the Data/ folder, loading them into different graphs graph based on the key they're in.

There WILL BE a notebook loading the processed network (saved in TrainedNetworks/) where

Note: in the memory-aware cases, multiple cases can be defined. First order memory means awareness of the previous note(s), second order means that it is aware of the last two note(s) where it has been, and so on. When walking through these memory aware ones, one must provide a starting "node" which is not a note, but a sequence of n notes, where n is the awareness level. For these reasons, both the functions generating the memory graphs and their random walks are different to those of the standard markovian graphs.

Requirements

The requirements are listed in the requirements.txt file. Essentially any recent (~2022) version of Numpy, Networkx and PyGuitarPro will do.

markovplaystheguitar's People

Contributors

goznalo-git 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.