Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ability to specify notes which last longer than a quarter note. #75

Open
rain-sk opened this issue Sep 27, 2018 · 8 comments
Open

Ability to specify notes which last longer than a quarter note. #75

rain-sk opened this issue Sep 27, 2018 · 8 comments
Labels

Comments

@rain-sk
Copy link

rain-sk commented Sep 27, 2018

The string-based API for specifying rhythm and timing of notes is awesome, but the maximum unit of time being a quarter-note makes complex rhythms difficult to construct. I suggest adding additional characters and structures for note lengths greater than 1/4 notes.

@crazy4groovy
Copy link

I'm no expert! But I just noticed in the tidal.js example this

pattern: '[xxx]'

and [] makes it sound faster, maybe 1/8 notes? The docs don't mention this.

@rain-sk
Copy link
Author

rain-sk commented Oct 3, 2018 via email

@walmik
Copy link
Collaborator

walmik commented Oct 6, 2018

Thank you for the comments.

The functionality to extend note lengths is a must have for the browser clip method of scribbletune. It already exists in the node module which exports MIDI files as outlined here https://scribbletune.com/documentation/core/clip Basically adding underscores to a x will increase its length. So if x is a quarter notes, a single underscore like this, x_ makes it as long as 2 quarter notes and 2 underscores x__ makes it as long as 3 quarter notes. One can even set the default duration of each x thus making it possible to extend those notes exponentially.

However, for the browser we need to add this. I m open to PRs for this.. if no PR comes in I ll add it myself once I get some time.

@rain-sk
Copy link
Author

rain-sk commented Oct 12, 2018

Thanks for clarifying!

This begs the question (for me at least): what about dotted notes (beats that last 1.5 times the specified note length)? Would it be something like this? [x__] aka one note lasting the length of three eighth notes?

I've been messing around with some ways to make the clips editable in-browser, but understanding the notational restrictions will make it easier to design something that works!

@walmik
Copy link
Collaborator

walmik commented Oct 12, 2018

Hey HI @spencerudnick For those you can just mix and match.
so something like x[xx] is a quarter note followed by 2 eighth notes. If you dont want play one of the eighth notes then simply x[-x] You can keep subdividing further if you like.. for instance something like this x[x[xx]]. Here we have one quarter note followed by another quarter note which is chopped up into a eighth notes followed by 2 sixteenth notes.

@rain-sk
Copy link
Author

rain-sk commented Oct 12, 2018

@walmik I believe you're still referring to methods of subdividing quarter notes. Check out this video for an example of what I'm referring to.

Dotted notes instruct the instrument / musician to play a note which lasts for 1.5 times the length of the note specified. So a dotted quarter note lasts the length of a quarter note plus an eighth note.

Specifying these types of notes is pretty imperative for creating a visual clip editor, otherwise users will be limited to a constrained visual grid.

image

This also begs the question of how to specify notes spanning beats (tied notes), so a quarter-note could begin one eighth-note length from the beginning of the measure.

@rain-sk
Copy link
Author

rain-sk commented Oct 12, 2018

Based on your syntax, I could see something like: 'x[_-]'

Thoughts?

@walmik
Copy link
Collaborator

walmik commented Oct 13, 2018

I think this is definitely a new feature.

A hacky, unwieldy way that can be explored at least as a POC in the node module version (not the browser js) is to use the HDR speed and construct 2 clips and concat them before exporting. Basically you'd need to add a prop here for the required HDR speed (comments here have the description of what is HDR) https://github.com/scribbletune/scribbletune/blob/master/src/clip.js#L30

If that works out then we can put a new character in the pattern lingo for . Currently pattern only accepts

  • x
  • -
  • _
  • [
  • ]

Some thought must be invested while developing this as it needs to also subsequently support the same in the browser along with Tone.js (which is a primary dependency for running Scribbletune in the browser)

All in all i believe this a great feature to have.

@walmik walmik added the feature label Dec 1, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants