gogins / michael.gogins.studio

Studio of Michael Gogins: computer music, photographs, writings.
4 stars 0 forks source link

Piece for 2024 NYCEMF #71

Closed gogins closed 3 months ago

gogins commented 9 months ago

Updated to dos:

gogins commented 8 months ago

Some shaders to look at:

gogins commented 8 months ago

I ran into a roadblock. The vst3plugin opcodes won't load a Cardinal .vcv file. Not sure why.

Solution: Load .vcv files in Reaper from the Cardinal menu, then save as .vstpreset files from the Reaper menu.

gogins commented 8 months ago

Here's the problem:

auto tuid = vst3_plugin->classInfo.ID().data();
auto classid = Steinberg::FUID::fromTUID(tuid);            
memory_stream.seek (0, Steinberg::IBStream::kIBSeekSet, &position);
log(csound, "vst3presetload: stream_size: %d\n", stream_size);
auto result = Steinberg::Vst::PresetFile::loadPreset(&memory_stream, classid, vst3_plugin->component);
if (result == false) {
    log(csound, "vst3presetload: failed to load: %s\n", preset_filepath.c_str());
    return NOTOK;
}

The .vcv files are just JSON, and don't have the component ID.

gogins commented 8 months ago

Doing this:

cat "/Library/Application Support/Cardinal/patches/examples/DRMR_-_Gabberswing.vcv"

prints out JSON for the patch.

gogins commented 8 months ago

The following shows that Rack is what is actually loading the preset.

[0.000 info CardinalCommon.cpp:578 Initializer] Cardinal VST3 23.10, compatible with Rack version 2.3.0
[0.000 info CardinalCommon.cpp:579 Initializer] Mac 14.1
[0.000 info CardinalCommon.cpp:580 Initializer] Binary filename: /Library/Audio/Plug-Ins/VST3/Cardinal.vst3/Contents/MacOS/Cardinal
[0.000 info CardinalCommon.cpp:582 Initializer] Bundle path: /Library/Audio/Plug-Ins/VST3/Cardinal.vst3
[0.000 info CardinalCommon.cpp:588 Initializer] System directory: /Library/Application Support/Cardinal
[0.000 info CardinalCommon.cpp:589 Initializer] User directory: /Users/michaelgogins/Documents/Cardinal
[0.000 info CardinalCommon.cpp:590 Initializer] Template patch: /Users/michaelgogins/Documents/Cardinal/templates/main.vcv
[0.000 info CardinalCommon.cpp:591 Initializer] System template patch: /Library/Application Support/Cardinal/patches/templates/main.vcv
[0.001 info CardinalCommon.cpp:605 Initializer] Initializing plugins
[0.118 info CardinalCommon.cpp:608 Initializer] Initializing plugin browser DB
[0.123 info CardinalCommon.cpp:625 Initializer] OSC Remote control is not available on plugin variants
[0.125 info Rack/src/patch.cpp:273 load] Loading patch /Users/michaelgogins/Documents/Cardinal/templates/main.vcv
[0.127 info Rack/src/patch.cpp:273 load] Loading patch /Library/Application Support/Cardinal/patches/templates/main.vcv
[0.128 info Rack/src/patch.cpp:339 loadAutosave] Loading autosave /var/folders/tc/x44lyz_j7bn468tgvvb352t40000gn/T/Cardinal.0003/patch.json

In Reaper, there are [1..24] unnamed parameters. Perhaps one of these does the job.

At any rate, there has to be some way that the host tells Cardinal or Rack which preset file to load!

gogins commented 8 months ago

Cardinal is now working with .vstpresets.

I think that with the full 'Cardinal' unit it may be necessary to use the 8 channel host audio output.

Not so.

gogins commented 8 months ago

I got the preset file loading to work as a variant of vst3init that loads the preset before performance starts, vst3initpreset.

gogins commented 8 months ago

Looks like a very good resource here: https://patchstorage.com/.

Nothing for Csound here, except for a few Cabbage patches. VCV Rack has by far the most. There are so many plugins and applications to run these patches that I did not know about. Cardinal has quite a few, competitive with many other software synthesizers.

gogins commented 8 months ago

Does Csound 6.19 support LV2 instrument plugins?

gogins commented 8 months ago

I can't find a way to connect a WebAudio Analyser to directly read the audio output from outside the JavaScript context.

Thus to stop and start recording audio I need to save it to the browser's private filesystem and then download it from there, as in Victor's tutorial, also see https://blog.logrocket.com/programmatically-downloading-files-browser/.

gogins commented 8 months ago

Added controls to No. 14.

I will need to bring in the WebAssembly version of Cardinal.

gogins commented 8 months ago

i keep going back to Postinia-v5e.html which consistently holds my interest. But it's too similar to the piece that I already had in the NYCEMF. It does use ValhallaShimmer. I may clean this up a bit and then try changing the notes so it's actually a new piece.

The notes are different in Poustinia-v5g.html but I do not like the way I use the SeidelHarmOsc instrument.

Poustinia-v5h.html starts out better, but then gets too muddy and busy.

Poustinia-v5i.html quite similar but a bit better. Except the Xing needs to go.

Poustinia-v5m.html quite similar but more rhythmic variation and changes of tempo, not all of which I like. Also uses Cardinal (VCV Rack plugin). Effective crescendos. Weak ending.

Poustinia-v5n.html introduces more texture but too muddy and confused.

Work on:

gogins commented 7 months ago

Regarding infrastructure, refactor with constant infrastructure plus conditional code and hooks:

gogins commented 7 months ago

I've been looking at the samples in the Strudel REPL and like Richter Chords quite a bit. Something in my line could be made from this. Of course the techno beat would have to go. I think this comes from Max Richter's progression in On the Nature of Daylight.

gogins commented 7 months ago

I have draft pieces Tishina-ChordLindenmayer.html and Tishina-Strudel.html. I need to bring the Record button into Tishina-Strudel.html (done) and otherwise update the infrastructure. I may also need a Tishina-CsoundAC.html draft piece.

gogins commented 7 months ago

Some of the Strudel users are pretty sophisticated. I just learned about Filtered Point Symmetry from the Strudel Discord, a live example is here: https://oscarbyrne.github.io/strudel/swatch/. See Music Theory Online here.

gogins commented 7 months ago

I have Tishina-Strudel.html rendering a copy of Richter Chords. I now need to change this to my own taste and so that it is not an infringement.

gogins commented 7 months ago

Tishina-ChordLindenmayer currently is implemented using ChordSpace.js in which arithmetic on tempo is possible.

Do I need a Tishina-IFS?

gogins commented 7 months ago

There is a subtle click in the Csound orchestra. I wll identify and fix it. A binary search. The instruments in Kolob are:

instr FMWaterBell uses instrument number 1 
instr Phaser uses instrument number 2
instr Droner uses instrument number 3
instr Sweeper uses instrument number 4
instr Buzzer uses instrument number 5
instr Shiner uses instrument number 6
instr Blower uses instrument number 7
instr ZakianFlute uses instrument number 8
instr PianoteqNote uses instrument number 9
instr Bower uses instrument number 10
instr FilteredSines uses instrument number 11
instr Guitar uses instrument number 12
instr Kung2 uses instrument number 13
instr Kung4 uses instrument number 14
instr Plucked uses instrument number 15
instr SeidelHarmOsc uses instrument number 16
instr TubularBell uses instrument number 17
instr YiString uses instrument number 18
instr Xing uses instrument number 19
instr VcvNote uses instrument number 20
instr VcvOut uses instrument number 21

No, in Kolob I don't hear it. Trying Tishina-ChordLindenmayer-v3, but I don't unambiguously hear anything there as well.

gogins commented 7 months ago

In switching to CsoundAC's ChordLindenmayer, the file:///Users/michaelgogins/csound-ac/doc/html/classcsound_1_1ChordLindenmayer.html#details documentation does match the CsoundAC header file comments, so that's good.

The only HTML example using this is /Parachronic/CsoundAC-HTML-Demo.html, but the Lindenmayer system code in this example does not match the current ChordLindenmayer specification. However, the Python Scamper and Drone examples do use the current specification, so I'm starting with one of those. Indeed, notes are generated. But the PianoRoll3D does not work.

I will dump that in favor of using a Silencio Score object, or I can adapt the Silencio score display to also use a CsoundAC Score object.

gogins commented 7 months ago

It's working now. I will refactor the 3D display to work with CsoundAC Scores.

gogins commented 3 months ago

Now I'm planning to use a variation of the piece I submitted for the ICSC. No I'm not.

gogins commented 3 months ago

Seidel: Change visuals when tempo changes. Boulanger: Be very careful with tempo changes.

gogins commented 3 months ago

Look at:

gogins commented 3 months ago