On 1/22/2012 8:57 PM, Julian Leviston wrote:
On 23/01/2012, at 2:30 PM, BGB wrote:
little if anything in that area that generally makes me think
"dubstep" though...
(taken loosely enough, most "gangsta-rap" could be called "dubstep"
if one turns the sub-woofer loud enough, but this is rather missing
the point...).
Listen to this song. It's dubstep. Popular dubstep has been raped to
mean "brostep" or what skrillex plays... but this song is original
dubstep.
two cents. mine.
http://www.youtube.com/watch?v=IlEkvbRmfrA
sadly... my internet sucks too much recently to access YouTube (it,
errm, doesn't even try to go, just says "an error occured. please try
again later."...). at this point, it is hard to access stupid Wikipedia
or Google without "connection timed out" errors, but this is the free
internet provided by the apartment complex, where traces show it is
apparently through 3 layers of NAT as well according to tracert (the
local network, and two different "192.169.*.*" network addresses)
also no access to usenet (because NNTP is blocked), or to FTP/SSH/...
(also blocked).
and sites like StackOverflow, 4chan, ... are black-listed, ...
but, yeah, may have to pay money to get "real" internet (like, via a
cable-modem or similar).
but, anyways, I have had an idea (for music generation).
as opposed to either manually placing samples on a timeline (like in
Audacity or similar), or the stream of note-on/note-off pulses and
delays used by MIDI, an alternate idea comes up:
one has a number of delayed relative "events", which are in-turn piped
through any number of filters.
then one can procedurally issue commands of the form "in N seconds from
now, do this", with commands being relative to a base-time (and the
ability to adjust the base-time based either on a constant value or how
long it would take a certain "expression" to finish playing).
likewise, expressions/events can be piped through filters.
filters could either apply a given effect (add echo or reverb, ...), or
could be structural (such as to repeat or loop a sequence, potentially
indefinitely), or possibly sounds could be entirely simulated (various
waveform patterns, such as sine, box, and triangle, ...).
the "main mix" would be either a result of evaluating a top-level
expression, or possibly some explicit "send this to output" command.
evaluation of a script would be a little more complex and expensive than
MIDI, but really why should this be a big issue?...
the advantage would be mostly that it would be easier to specify
beat-progressions, and individually tweak things, without the pile of
undo/redo, copy/pasting, and saving off temporary audio samples, as
would be needed in a multi-track editor.
it is unclear if this would be reasonably suited to a generic
script-language (such as BGBScript in my case), or if this sort of thing
would be better suited to a DSL.
a generic script language would have the advantage of making it easier
to implement, but would potentially make the syntax more cumbersome. in
such a case, most mix-related commands would likely accept/return
"stream handles" (the mixer would probably itself be written in plain C
either way). my current leaning is this way (if I should choose to
implement this).
a special-purpose DSL could have a more narrowly defined syntax, but
would make implementation probably more complex (and could ultimately
hinder usability if the purpose is too narrow, say, because one can't
access files or whatever...).
say, for example, if written in BGBScript syntax:
var wub=mixLoadSample("sound/patches/wub.wav");
var wub250ms=mixScaleTempoLength(wub, 0.25);
var wub125ms=mixScaleTempoLength(wub, 0.125);
var drum=mixLoadSample("sound/patches/drum.wav");
var cymbal=mixLoadSample("sound/patches/cymbal.wav");
//play sequences of samples
function beatPlay3Play1(a, b)
mixPlaySequence([a, a, a, b]);
function beatPlay3Play2(a, b)
mixPlaySequence([a, a, a, b, b]);
var beat0=mixBassBoost(beatPlay3Play2(wub250ms, wub125ms), 12.0);
//add 12db of bass
var beat1=mixPlaySequenceDelay([drum, cymbal], 0.5); //drum and cymbal
var beat2=mixPlayTogether([beat0, beat1]);
mixPlayOutput(beat2); //mix and send to output device
or such...
_______________________________________________
fonc mailing list
[email protected]
http://vpri.org/mailman/listinfo/fonc