Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/mkontogiannis/euclidean-rhythms
Calculates the rhythmical patterns based on the euclidean/bjorklund's algorithm
https://github.com/mkontogiannis/euclidean-rhythms
bjorklund-algorithm euclidean-rhythms javascript rhythmical-patterns uberkool
Last synced: 11 days ago
JSON representation
Calculates the rhythmical patterns based on the euclidean/bjorklund's algorithm
- Host: GitHub
- URL: https://github.com/mkontogiannis/euclidean-rhythms
- Owner: mkontogiannis
- Created: 2016-10-31T19:28:44.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2022-09-29T23:36:49.000Z (almost 2 years ago)
- Last Synced: 2024-06-21T03:33:58.688Z (21 days ago)
- Topics: bjorklund-algorithm, euclidean-rhythms, javascript, rhythmical-patterns, uberkool
- Language: TypeScript
- Homepage:
- Size: 831 KB
- Stars: 30
- Watchers: 3
- Forks: 3
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
Lists
- awesome-five23 - euclidean-rhythms
README
# euclidean-rhythms
[![example branch parameter](https://github.com/mkontogiannis/euclidean-rhythms/actions/workflows/main.yml/badge.svg?branch=master)](https://github.com/mkontogiannis/euclidean-rhythms/actions/workflows/main.yml)
[![Codecov](https://img.shields.io/codecov/c/gh/mkontogiannis/euclidean-rhythms.svg?style=flat-square)](https://codecov.io/gh/mkontogiannis/euclidean-rhythms)
[![npm](https://img.shields.io/npm/v/euclidean-rhythms.svg?style=flat-square)](https://www.npmjs.com/package/euclidean-rhythms)
[![npm](https://img.shields.io/npm/dt/euclidean-rhythms.svg?style=flat-square)](https://www.npmjs.com/package/euclidean-rhythms)A micro-library in javascript that calculates the rhythmical patterns of equally distributed pulses in available steps.
It implements the bjorklund's algorithm that is described by Godfried Toussaint in [The Euclidean algorithm generates traditional musical rhythms](http://cgm.cs.mcgill.ca/~godfried/publications/banff.pdf)## Purpose
I made this library in 2016; I couldn't find an implementation that yields to the expected results as described on the paper above and also being well tested with unit tests and code coverage.
The current solution is a javascript / typescript interpretation of the python code that is retrieved from [atonalmicroshores.com](http://www.atonalmicroshores.com/2014/03/bjorklund-py/)
## Usage
### Node.js
Run `npm install euclidean-rhythms`
Then in your javascript / typescript code:
`const er = require('euclidean-rhythms');`
or in es6
`import {getPattern} from 'euclidean-rhythms';`
`let cumbia = getPattern(3, 4);`
cumbia should be [ 1, 0, 1, 1 ]`let cinquillo = getPattern(5, 8);`
cinquillo should be [ 1, 0, 1, 1, 0, 1, 1, 0 ]etc ...
### Browser
\*\* There is currently no umd bundle support from tsup, will be added as long as there is need for it; in the meantime you can use the older pre-typescript version of it.
Use one of the prepared browser bundles from [unpkg.com](https://unpkg.com)
[https://unpkg.com/[email protected]/dist/bundle.umd.js](https://unpkg.com/[email protected]/dist/bundle.umd.js)
[https://unpkg.com/[email protected]/dist/bundle.umd.min.js](https://unpkg.com/[email protected]/dist/bundle.umd.min.js)Then in your javascript code:
`var pattern = euclideanRhythms.getPattern(5, 13);`
pattern should be : [ 1, 0, 0, 1, 0, 1, 0, 0, 1, 0, 1, 0, 0 ]## Develop
Clone the git repository and cd into it.
Run `npm run test` for executing the unit tests and `npm run build` to build the ems, commonjs and iife bundles and the type definitions.