Skip to content

The SonicWeave DSL for manipulating musical frequencies, ratios and equal temperaments

License

Notifications You must be signed in to change notification settings

osmiumic/sonic-weave

 
 

Repository files navigation

sonic-weave

SonicWeave is a Domain Specific Language for manipulating musical frequencies, ratios and equal temperaments.

Not to be confused with the Sweave flexible framework for mixing text and R code for automatic document generation.

Package overview

The sonic-weave package is many things.

You may also be interested in the technical overview of SonicWeave as a programming language.

Appendix: tempering, commas

Highlights

Harmonic segment from the 8th harmonic to the 16th (repeating at the octave).

8::16

10-tone equal temperament

tet(10)

The major scale in Pythagorean tuning i.e. 3-limit just intonation.

sorted(3^[-1..5] rdc 2)

Scale title, colors and labels.

"Japanese pentatonic koto scale, theoretical. Helmholz/Ellis p.519, nr.110"

9/8 white "Major 2nd"
6/5 green "Minor 3rd"
3/2 white "Perfect 5th"
8/5 green "Minor 6th"
2   gray  "Root (Octave)"

Additional resources

Special thanks

  • Arseniiv A. - Co-developer / Language feedback
  • Inthar - Co-developer / Language feedback
  • Akselai - Quality assurance
  • Godtone - Notation adviser / Language feedback
  • Joe Hildebrand - Grammar review
  • Marc Sabat - Notation adviser

Acknowledgments / inspiration

SonicWeave looks like Javascript with Python semantics, has Haskell ranges and operates similar to xen-calc with some Zig sprinkled on top.

  • ECMAScript - Brendan Eich et. al.
  • Python - Guido van Rossum et. al.
  • Haskell - Lennart Augustsson et. al.
  • Zig - Andrew Kelley et. al.
  • NumPy - Travis Oliphant et. al.
  • Scala - Manuel Op de Coul
  • Scale Workshop 1 - Sean Archibald et. al.
  • SQL - Donald D. Chamberlin et. al.
  • FJS - "misotanni"
  • NFJS - Matthew Yacavone
  • Xen-calc - Matthew Yacavone
  • Xenpaper - Damien Clarke
  • Ups and downs notation - Kite Giedraitis
  • S-expressions - "Godtone"
  • Peg.js - David Majda et. al.
  • Peggy - Joe Hildebrand et. al.
  • Xenharmonic Wiki - (community project)
  • Xenharmonic Alliance - (community Discord / Facebook)

About

The SonicWeave DSL for manipulating musical frequencies, ratios and equal temperaments

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • TypeScript 94.0%
  • PEG.js 5.5%
  • JavaScript 0.5%