Closed gogins closed 6 years ago
Got Zhang's site narrowed down to just the flame, made the input field invisible. To do:
No time to mess with ES6 modules or even with WebPack. I'm loading CsoundAudioNode in the index HTML. It's now loading...
Tore out Zhang's WebAudio code. Next task is to embed Csound and clabber in the flame page.
All pieces tied together albeit in most hackish ways.
It's clear that clubber to string name isn't the way to go, variations are too similar, also smoothly interpolating between perameters would be good.
I could change the hash function to better suit clubber but I think it will be better to put in keys to generate chord progressions and voice-leadings and to try using the chord voices with the existing hash function.
Annoying bug in that the score always only plays 36 seconds. Not sure why.
Replaced Ambisonic csd with Drone IV. Not stopping now. Removed all style sheets so that now UI elements do not hide each other. To do:
I made hear_patch.py
which works great, no idea why I didn't do this before, looks to greatly speed instrument development and tweaking.
This is now a piece. It still needs work.
Duration -1 works fine. Notes now turn off with the d
opcode. Voiceleading seems to be working well enough. Appearance is good, sounds are pretty good. To finish the piece I need:
For glitches I have switched to ftgen above instr
blocks rather than ftgenonce
within instr
blocks, and I am using prealloc
. If there is still a problem I can try not using the signal flow graph opcodes (but they do really simplify things). After that the only choice is simpler instruments.
For better key bindings I should pick up numeric values only in one case, and the command keystrokes should simply be letters, no combination keystrokes. The commands should be:
c
: create a note from the chord.v
: create a note from the chord with the closest voiceleading from the prior chord.t
: apply the T(N)
transformation.i
: apply the I
transformation.k
: apply the K
transformation.q
: apply the Q(N, modality)
transformation.r
: apply an octavewise revoicing, i.e. the v(N)
transformation.p
: play the piece.s
: stop the piece.h
: toggle the controls.Then I need to practice and make a note of artistically useful sequences of commands.
Done all that, now working on the arrangement. Problems. I did learn something: if using i
for note on and d
for note off, thus requiring releasing envelopes, there needs to be a p3 (i.e. -1) segment in the envelope. This is documented but I failed to understand the manual.
Update: not quite true. There appears to be a bug in Csound whereby in this case, for simultaneously sounding notes for an instrument all of which have indefinite duration, the instrument numbers must be distinct!
I can't add this to the voice index of the chord, it has to be in the Event object.
Tried that, it starts up the notes but now they don't turn off! I'll have to look at the Csound source code.
There are problems with note off and note on, but I think it's manageable. They key is not to use fractional instrument numbers, but rather i
and d
opcodes, and to have the right kind of releasing envelope. It has to continue for some time but then release at the end of the note.
I having problems with the FM water bell however. I can't seem to get the envelope to work right.
Coming along great!
jspline
or rspline
to vary the level of the individual instruments? A keystroke to change dynamics?The danger as always is the fine line between pretty and cheesy. It will be nothing if it's not pretty, and it is, but it's too often cheesy.
What will be effective is to vary the tempo of changes, and at times just rest on a chord to let the moving sounds move.
The console window needs to be just a bit wider to show a whole event on one line.
I will leave this issue open until the performance but I am moving on to Parachronic.
yarn start
Sample rate must match in src/index.template.html
.
Went OK! Post live version? Variant with automated changes that also allows manual changes.
Visual music based on the "Flame" sketch of Zhang. Options:
In any case the input element for the word must be removed or hidden.
I will also want to change the appearance of the flame, something thicker and more atmospheric would be good.
I will want to try loading the WebAssembly stuff using requirejs.