soundio / sequence-json Goto Github PK
View Code? Open in Web Editor NEWThis project forked from cruncher/music-json-spec
A way of creating music sequence data in JSON
This project forked from cruncher/music-json-spec
A way of creating music sequence data in JSON
Maybe this was in the publication from awhile back, but I don't see it documented in the README. I don't know what would be the use of this event--could someone enlighten me?
A Sequence as an Event is currently specified as follows:
[time, "sequence", data, rate]
Parameter rate
seems to belong to interpretation
.
In the case that data
is a Sequence object, this can go into interpretation
.
In the case that data
is a reference to a sequence dependency, there may be other parameters about the sequence one wishes to override, in which case, we could change the rate
param into an override
param or something of sorts.
So, can I start a discussion about possible transforms? Do you have an idea of the transforms you would like to see? Some obvious transforms that spring to mind ...
'transpose', n
Where n is a positive or negative float that describes the number of semitones to transpose by.
'diatonic-transpose', mode, n
Where mode describes a scale and key, and n the number of steps to transpose by. It is not clear to me what to do with notes that lie between notes in the defined mode in a way that makes musical sense.
'invert', note
Where note defines a pitch that a note or sequence of notes is inverted around.
'diatonic-invert', mode, note
Where mode describes the scale and key and note defines a pitch that a note or sequence of notes is inverted around diatonically. Again, it is not clear to me what to do with notes that lie between notes in the defined mode.
'translate', time
Where time is a positive or negative float that describing a shift in time.
'quantize', ref, strength
Where ref references another sequence of events, and strength defines how much time shift to apply to align the current event or events with the events in the referenced sequence.
'velocity-curve', ...
...
I'd like to check if it's possible to change time signature and key signature in the middle of a song? How? Thanks.
First of all it is great to see that there are more people thinking about this. What is clear however is that a few fundamental aspects are missing from your proposal. To me this is because you seem to have based your work on OSC and MIDI which both are rather poor representations of music, because in their essence these protocols are controller streams.
My suggestion would be to read up with the work of Peter Desain and Henkjan Honing, most specifically their work on representing music in "Lisp as a second Language: Functional Aspects", as well as have a very thorough look at how Lilypond (http://lilypond.org) implements this system.
Together with a partner I am also developing a JSON protocol for music, which I will be using to replace the current model (which also doesn't take the work of Desain and Honing into account) in my canvas based notation system Presto (http://mauritslamers.github.io/presto).
Hello,
I've been following the progress of this for while. Good work! I wish something like this to get more or less standarized across different libraries. I'm interested in a declarative API to generate music and I've made a first attempt with scorejs and know I'm planning to rewrite a second version and I think it would be nice to follow your specification.
One problem that bothers me is that in scorejs the duration play an important role, the same as time, in order to perform events transformations without knowing the type of the events, and in your specification, the duration is not always present, so this kind of functionallity is harder to implement.
Something like this would made the things much easier:
event = [ time, dur, type, data... ] // dur === null means no duration
... but I'm open to any solution... what do you think?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.