ziffers

Numbered musical notation for composing algorithmic and generative melodies

https://github.com/amiika/ziffers

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (8.2%) to scientific vocabulary

Keywords

algorithmic-composition generative-music music music-composition music-notation music-theory numbered-musical-notation numbered-notation numeric-notation sonic-pi
Last synced: 6 months ago · JSON representation ·

Repository

Numbered musical notation for composing algorithmic and generative melodies

Basic Info
  • Host: GitHub
  • Owner: amiika
  • License: mit
  • Language: Ruby
  • Default Branch: master
  • Homepage:
  • Size: 1.2 MB
Statistics
  • Stars: 83
  • Watchers: 8
  • Forks: 5
  • Open Issues: 2
  • Releases: 2
Topics
algorithmic-composition generative-music music music-composition music-notation music-theory numbered-musical-notation numbered-notation numeric-notation sonic-pi
Created over 7 years ago · Last pushed over 1 year ago
Metadata Files
Readme License Citation

README.md

Ziffers: Numeric notation for composing algorithmic and generative music using Sonic Pi

Ziffers is a generative numbered musical notation (aka. Ziffersystem) and a live code golfing framework that makes composing melodies and rhythms easier and faster in Sonic Pi.

Writing and playing melodies in any key or scale will be as simple as: zplay "q 4 e 1 1 q 2 1 r #3 4 ", key: "f", scale: "major", synth: :piano or playing loops: zloop :ride, "e 3 3 2 2 1 1 2 2", key: :c, scale: :chromatic, synth: :piano or loops with generative live rules: z1 "e1", rules: { "1"=>"3", "3"=>"2", "2"=>"4", "4"=>"(1,6)", "5"=>"1", "6"=>"2" }, synth: :pretty_bell or play infinite sequences. Easy as: zplay pi, rhythm: "q q h q q h h q ee h q ee" or simple aleatoric melodies: z1 "[0,3,5] 4 (1,3) (4,6) 2 e <3 0 (2,4)> (5,7)", scale: :ahirbhairav, key: :e, synth: :piano, attack: 0.25 or go crazy and create lists and do list operations using transformations and nested notation: z1 "q (0 1 (3,7) 3)~<*>(4 [6,4,[5,4,2,7]] (0,(5,8)) (1,6))", synth: :kalimba and much more ... See Ziffers wiki or download A4 cheatsheet to learn more.

Here is a cheatsheet you can copy to Sonic Pi editor: ```

Pitches: -2 -1 0 1 2

Chords: 0 024 2 246

Note lengths: w 0 h 1 q 2 e 3 s 4

Subdivision: [1 2 [3 4]]

Decimal durations: 0.25 0 1 <0.333>2 3

Octaves: ^ 0 ^ 1 _ 2 _ 3

Escaped octave: <2> 1 <1>1<-2>3

Roman chords: i ii iii+4 iv+5 v+8 vi+10 vii+20

Named chords: i^7 i^min i^dim i^maj7

Modal interchange (a-g): iiia ig ivf^7

Escape/eval: {10 11} {1.2 2.43} {3+1*2}

Randoms: % ? % ? % ?

Random between: (-3,6)

Random selections: [q 1 2, q 3 e 4 6]

Repeat: [: 1 (2,6) 3 :4]

Repeat cycles: [: (1,4) <(2 3) (3 (1,7))> :]

Lists: h 1 q(0 1 2 3) 2

List cycles: (: (1,4) <(2 3) (3 (1,7))> :)

Loop cycles (for zloop or z0-z9): <0 <1 <2 <3 <4 5>>>>>

Basic operations: (1 2 (3 4)+2)2 ((1 2 3)+(0 9 13))-2 ((3 4 {10})(2 9 3))%7

Product operations: (0 1 2 3)+(1 4 2 3) (0 1 2)-(0 2 1)+2

Euclid cycles: (q1)<6,7>(q4 (e3 e4) q2) or (q1)<6,7<(q4 q3 q2)

Transformations: (0 1 2) (0 1 2)(-2 1) etc.

List assignation: A=(0 (1,6) 3) B=(3 ? 2) B A B B A

Random repeat: (: 1 (2,6) 3 :4)

Conditionals: 1 {%<0.5?3} 3 4 (: 1 2 {%<0.2?3:2} :3)

Functions: (0 1 2 3){x%3==0?x-2:x+2}

Polynomials: (-10..10){(x*3)(x+1)%12}

```

Quick start

Requirements

Install ziffers

Install Ziffers to your Sonic Pi by cloning this project into your home directory (this makes referencing easier as most of the examples use ~ shorthand to require stuff). Ziffers can then be required to your Sonic Pi project using:

require "~/ziffers/ziffers.rb" # ~ references ziffers under users home folder, works also in Windows

Stay up to date as the Ziffers is an ongoing project. Post Issues to report bugs or to ask questions.

Examples

There are some pretty random examples in the Examples-folder. You can also try out one line examples from tests or browse trough wiki. If you make some nice tunes do a pull request to Examples folder to share! Thanks!

Documentation

Syntax and methods are documented in Ziffers wiki.

Help & Contributions

For bugs post an issue or a fix using merge request. Use discussions for general questions and feature requests.

Owner

  • Name: Miika Alonen
  • Login: amiika
  • Kind: user
  • Location: Helsinki
  • Company: Gofore

Citation (CITATION.cff)

cff-version: 1.2.0
message: "Please cite Ziffers as below:"
authors:
- family-names: "Alonen"
  given-names: "Miika"
  orcid: "https://orcid.org/0000-0002-0065-0017"
title: "Ziffers: Numbered notation for algorithmic composition"
version: 2.0
date-released: 2022-12-12
url: "https://github.com/amiika/ziffers"

GitHub Events

Total
  • Watch event: 3
Last Year
  • Watch event: 3

Issues and Pull Requests

Last synced: 10 months ago

All Time
  • Total issues: 66
  • Total pull requests: 4
  • Average time to close issues: 8 months
  • Average time to close pull requests: 8 days
  • Total issue authors: 6
  • Total pull request authors: 3
  • Average comments per issue: 1.14
  • Average comments per pull request: 0.75
  • Merged pull requests: 4
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 1
  • Pull requests: 1
  • Average time to close issues: N/A
  • Average time to close pull requests: 30 days
  • Issue authors: 1
  • Pull request authors: 1
  • Average comments per issue: 0.0
  • Average comments per pull request: 2.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • amiika (60)
  • instantkaffee (1)
  • Enkerli (1)
  • b08x (1)
  • sklink (1)
  • yanndepps (1)
Pull Request Authors
  • edelveart (2)
  • amiika (2)
  • Sohalt (1)
Top Labels
Issue Labels
enhancement (15) documentation (4) help wanted (3) good first issue (3) refactoring (2) question (2) idea (1)
Pull Request Labels