On 5/16/2011 9:22 PM, Ian Piumarta wrote:
Dear Josh,

Thanks for posting this!

Thought you guys would get a kick out of this YAML->WAV sequencer written in 
Ruby:
https://github.com/jstrait/beats
I think this is pretty cool.  (It puts us well on the way to archiving the 
entire output of Kraftkwerk as ASCII files. ;-)  However...

Music is one area where direct manipulation clearly wins over the command line. 
 So...  I'm curious what you (generically) think about what's missing from this 
representation, and how it might be added back, to reach the expressiveness of 
(for example) a well-made MIDI track.  (The largest amount of time assembling a 
nice-sounding MIDI track is not inputting the basic timing and pitch/instrument 
information but rather in tweaking the velocities, expression, etc., to make it 
sound like humans are performing.)

FWIW, in some of my own stuff before, I had converted MIDI (fairly directly) to/from an ASCII representation. I had done a few things with this. unlike a few other (vaguely similar) things I had seen, I didn't really abstract over it much at all, and so the ASCII representation was not all that far removed from the binary command-stream.


I considered the possibility of using this to create "original" music, but not being particularly musically inclined, this never really got much beyond being a drum-machine.

more elaborate was at one point trying to use MIDI-style audio synthesis in a TTS (Text-To-Speech) engine, but this was nowhere near being comprehensible (I was basically trying to use MIDI to represent the formant-control data).

note that in this attempt, extended samples (via an extended sample bank) were used, with most of these extended samples containing derived formants and similar.


IIRC, I had at one point considering a tweak (to the synthesizer) to allow also supporting a channel bank, such that one could use 32 or 64 channels in a track (vs 15 or so), and maybe have multiple percussive instruments at once. never got to this though.

likewise for allowing customizable (per-track) sample-banks. so that arbitrary sound effects could be used in addition to any standard samples (currently, there is a compromise, but it involves registering sounds with the synthesizer via API calls, and these samples are "global" rather than track-specific).

as-is, in my case, my MIDI synthesizer, main mixer, and TTS engine, ended up remaining as separate components (each doing different things).

so: MIDI manages music; TTS manages speech synthesis; and the mixer manages assigning audio-streams to point-sources (and accounting for spatial location/velocity and doing doppler-shifting and so on). this is, vs, say, some sort of unified super-mixer...

and, meaning, say, one would presently need to playback multiple MIDI streams if they want instruments in different spatial locations (but, nothing near this elaborate is presently done, me mostly using MIDI for unattenuated background music and similar in a 3D engine).


yeah, I wrote pretty much all my own code here, as I guess I am funny that way (well, and want to keep full legal control over my code, which generally means staying clear of GPL and similar).


I'm also curious what you (generically) think could/should be added to this to 
make a full-blown sequencing language, capable of representing (e.g.) anything 
that can be programmed/manipulated graphically in something like Ableton Live.  
I've always had a slightly frustrating experience with Ableton (and Garbage 
Band, etc.) feeling that the semantic content of an assembled track is a lot 
less than the amount of manipulation required to achieve the final result: copy 
and paste is a (very) poor substitute for subroutines!  On the other hand, I 
have no idea if a written representation could be much more (or even anything 
like) as concise.  Maybe a combination of the two is needed?

FWIW, it's worth following the link to the author's other projects.  Degrafa, 
in particular, is very interesting.


can't say... little personal experience here...

some of my efforts (such as the TTS experience) did involve "printing" the textually-serialized ASCII representation, which was generally handled in C code (IIRC, largely by the usual combination of "while()" loops and "switch()" blocks...).

a bit lacking though is the inability to produce multiple independent streams and have them be combined by the synthesizer just prior to (or during) playback (as is, it would require using the API to convert them all into binary globs, and then use other calls to merge them all into a single track, which would then be played).

granted, the above may not matter as much in musical settings, since then it is more a matter of composition, rather than needing real-time control over the output.


but, as-is, music is still not really my area...


_______________________________________________
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc

Reply via email to