Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Discussion and development of web/wasm version #287

Open
24 of 29 tasks
falkTX opened this issue Jul 6, 2022 · 75 comments
Open
24 of 29 tasks

Discussion and development of web/wasm version #287

falkTX opened this issue Jul 6, 2022 · 75 comments

Comments

@falkTX
Copy link
Contributor

falkTX commented Jul 6, 2022

For those unaware, https://cardinal.kx.studio/ is totally a thing now for some reason.
Also https://minicardinal.kx.studio/ for a mini/stripped-down version that loads faster.

There are some issues and things still to do.
Because this is for playground and testing and fun, and not all that serious, let's not open more than 1 ticket for web related things.
Everything web/wasm related should be on this ticket.

Stuff to do or implement:

  • audio input
  • touch events
  • clipboard (do fake internal one if not possible to expose in browser)
  • webmidi
  • host time controls (on menu bar, providing fake but valid BBT values)
  • intro message explaining what it all is, what to expect etc
  • detect incompatible browser setups and refuse to even load (noscript, no simd, no webgl2)
  • build libsndfile and fftw for extra module features
  • minimum gui size (CSS is enough?)
  • allow url parameters to tweak page behaviour, also load patches as base64 encoded string
  • test loading all modules and disable those with custom non-GLES2 compat code

Known issues:

  • Loading zst compressed project file fails to load patch.json
  • opening salamonis-mono-regen example patch triggers an exception
  • going full screen can mess up with the viewport size and coordinates
  • ctrl+a clears all text
  • audiofile player is missing regular audio support (only mp3 works)
  • audiofile and midifile inside ildaeil fail to show file dialogs
  • latest changes made performance in chrome worse?? firefox still fine..
  • compressed data assets > 50Mb
  • missing versioning to js, wasm and data downloads
    (so they are updated automatically when reopening the page as needed)

Stuff to fix or workaround:

  • apply high-dpi event offset
  • test and implement fractional scaling "high-dpi" (only supports 2x and 3x now)
  • prevent ctrl/cmd+ shortcut keys from going to the browser
  • prevent browser from zooming the page
  • oddities with mouse down and leaving browser window

Undecided:

  • host parameters
  • host cv
  • persistent storage (client-side browser DB)
  • bundle a few simple LV2 plugins (mda, caps, tap, etc)
@falkTX
Copy link
Contributor Author

falkTX commented Jul 6, 2022

Leaving a note to myself, https://github.com/Dreamtonics/juce_emscripten/blob/master/modules/juce_audio_devices/native/emscripten/RtMidi.cpp has rough but working code for webmidi.
Not that it is complicated to do, but helps to have something to compare against.

@falkTX falkTX changed the title Problems with web/wasm version Discussion and development of web/wasm version Jul 6, 2022
@falkTX
Copy link
Contributor Author

falkTX commented Jul 7, 2022

high-dpi screen should work now.
tested locally with a mac mini.

if you have such a screen, let me know how it works!

image

@john-the-bard
Copy link

The ping pong delay from MSC makes a ton of noise if you load it, this basic patch which should play a single plucked note every second into a short and feedback heavy delay.

NOISE WARNING the output is connected and it immediately clips.

NOISEWARNING_Pluck.tar.gz

@diimdeep
Copy link

diimdeep commented Jul 7, 2022

Insanity. Wowzers. Would be cool to load patch from url encoded parameter, https://cardinal.kx.studio/?patch=encoded_blob like this

@falkTX
Copy link
Contributor Author

falkTX commented Jul 7, 2022

Insanity. Wowzers. Would be cool to load patch from url encoded parameter, https://cardinal.kx.studio/?patch=encoded_blob like this

I thought about this, and while I typically dislike such approaches, but I think it makes sense here.
A way to generate such link directly from the page would also be quite cool, so we can:

  1. open cardinal web page
  2. make a patch showing a specific thing
  3. use file -> generate pasteable link (or whatever better name there is)
  4. send that link to someone for quickly trying the patch

there are 2 things though that need to be done before we can tackle this:

  1. fix opening zst compressed patches
  2. allow for versioned caching of wasm data, so page reloads are instant (loading 100Mb of resources everytime to check new patches is just painful)

will add to the todo, thanks for the idea!

@pauldavisthefirst
Copy link

drag doesn't work to scroll boundaries of view area. click on output "socket", drag upward to reach module that is currently "off-screen" .. drag will break.

@pauldavisthefirst
Copy link

if scroll is used to zoom, easy to get to a point where cardinal does not occupy entire browser screen, at which point the coordinate determination seems to be messed up. drags will affect things not under the mouse.

@falkTX
Copy link
Contributor Author

falkTX commented Jul 8, 2022

drag doesn't work to scroll boundaries of view area. click on output "socket", drag upward to reach module that is currently "off-screen" .. drag will break.

mentioned on the 1st post as

oddities with mouse down and leaving browser window

and

if scroll is used to zoom, easy to get to a point where cardinal does not occupy entire browser screen, at which point the coordinate determination seems to be messed up. drags will affect things not under the mouse.

known issue, I fixed it already locally but didnt deploy a build for it yet

@falkTX
Copy link
Contributor Author

falkTX commented Jul 8, 2022

Small update: fixed up the ildaeil audiofile and midifile plugins, adjusted for more high-dpi screens, and updated view menu to follow official Rack 2.1.2 changes.

With the ildaeil fixes it is now possible to get some MIDI going.
Follow these steps:

  1. Add ildaeil module
  2. Add ildaeil expander midi output, place it touching the right side of ildaeil
  3. In ildaeil, switch to internal plugins (it is JSFX by default)
  4. Load "MIDI File"
  5. Set "Host sync" to off, "Repeat Mode" to on
  6. Press "show custom gui" button
  7. Pick a MIDI file from your PC

Right-click the expander module for polyphony options.

image

@falkTX
Copy link
Contributor Author

falkTX commented Jul 8, 2022

Good news, the issue with loading compressed project files is fixed. (or better said, a workaround is in place)
Somehow zstd extracts the tar with incorrect permissions, and then fails to load.
We now go for 777 for any file to be open, and all is good. The "files" are all virtual anyway, so doesn't matter on the web context.

Also, you can now pass it a patchstorage "slug" to the URL as a way to load that patch on start.
For example https://cardinal.kx.studio/?patchstorage=fern-sequence and https://cardinal.kx.studio/?patchstorage=example-patch-2
The URL parameter is the same that is used on patchstorage.com views, e.g. https://patchstorage.com/example-patch-2/

@falkTX
Copy link
Contributor Author

falkTX commented Jul 9, 2022

Another update, this is fun 😆

Thanks to previous work done in https://github.com/DISTRHO/PawPaw I could just repurpose it to build generic opensource libs for wasm. For now that is libogg, libvorbis, flac, opus, sndfile, liblo, fftw and lv2 related libs.
This helps a lot on building opensource plugins in wasm.
Also these extra libs allow to get the extra/proper file support in the audiofile module and brings in the audio-to-cv-pitch module (which required fftw)

I did a few more tweaks and made Cardinal able to load audio plugins from the "filesystem" (JSFX dont really count, they are not binaries).
I have compiled artyfx, die-plugins (imported ardour fx), fomp and mda LV2 plugins, and added them to the site/webapp. Just open up ildaeil and they will be there for the LV2 option.

image

@falkTX
Copy link
Contributor Author

falkTX commented Jul 10, 2022

ok a couple more things now:

  • fixed up event key input handling a bit, ctrl+a no longer clears all text
  • keyboard is no longer propagated to browser, so stuff like ctrl + scroll works now (some key combos like ctrl+n and ctrl+t cannot be overridden)
  • pointer lock is implemented and enabled by default (opt-out in view menu)
  • added full screen menu option

@dromer
Copy link
Collaborator

dromer commented Jul 10, 2022

Going out of full screen returns to the wrong size render (x/y mouse coordinates are still correct, but don't align with the view).

@falkTX
Copy link
Contributor Author

falkTX commented Jul 11, 2022

Going out of full screen returns to the wrong size render (x/y mouse coordinates are still correct, but don't align with the view).

I have some ideas for this, the fullscreen mode typically changes the viewport to render in "pixel perfect" mode by default, while typically contents are scaled instead. When entering fullscreen, we can request how to deal with the viewport and keep things as-is. Will try later

@falkTX
Copy link
Contributor Author

falkTX commented Jul 11, 2022

And more news for the web side, Web MIDI is implemented!
Both MIDI input and MIDI output.
Does not work on Firefox, as it is not implemented there. Only Chrome/ium-based browsers work for that.
And if you are using an Ubuntu based system with snaps, alsa-midi access is disabled there so this wont work.

The web audio stuff was rewritten from scratch too, I was using SDL before but it was doing some weird stuff behind the scenes, specially for audio input. Oh yeah, I got audio input to work too, but did not enable yet as the permission request for it would make the page look too suspicious. ("Why does this random page want mic access?")
A button on the menubar to request mic access might be the best, to handle later.
I did try the web audio input, and quality is really awful, so we are not losing much.

For the curious ones, relevant code for this web audio + midi is at https://github.com/DISTRHO/DPF/blob/develop/distrho/src/jackbridge/WebBridge.hpp
This is not using worklets yet, as that has special security considerations and just a pain to setup.
With the current single-threaded approach we do not get the best performance, but in turn it is also possible to just run the html files directly in any compatible browser.

I will try to have the html/js/wasm files built as part of 22.07 release on CI.
There is nothing special about it, just emscripten with USING_GLES=true build flag.

@falkTX
Copy link
Contributor Author

falkTX commented Jul 11, 2022

Audio input is now enabled.
And MIDI is disabled by default, as I try to optimize things a little big (chrome is behaviour worse after changing to custom written code vs old SDL2 usage, for some reason)

You can enable audio input and MIDI under the engine menu.

Audio input quality is really subpar here.. and forces itself as mono even if we request 2 channels.
You can see the blocky-ness of it in a spectrum, really ugly :(

image

But, well, feature is enabled now.

@falkTX
Copy link
Contributor Author

falkTX commented Jul 11, 2022

A bit more news on the input and processing..
For one, the issue I had with quality seems related to pulseaudio. using chrome with alsa the input quality is much better.

image

Chrome cannot do stereo input though, only Firefox does.

Also "fixed" the choppy audio in chrome after the latest updates, turns out it is just tweaking buffer size.
SDL was likely buffering things, not using a real 512 samples as requested.
Default now changed to be 2048 samples, but you can change this in the engine menu.
Might help make the webapp work on slower machines.

@falkTX
Copy link
Contributor Author

falkTX commented Jul 24, 2022

There is a mini version now at https://minicardinal.kx.studio/
Contains only core and fundamental modules, extras like carla/ildaeil are also not in there.

The mini version assets have a combined 15Mb size.
It is small enough that Firefox is happy to cache the page, so that's nice :)

Feel free to use and share!

@falkTX
Copy link
Contributor Author

falkTX commented Aug 4, 2022

A few more things:

touch events are now enabled, sorta..
because neither Rack or pugl can deal with touch events, they are converted to mouse events in hopefully a way that makes sense.

  • only 1 finger used at the moment.
  • quick press does a mouse click
  • press and hold does mouse right click
  • press and move does a mouse click + drag (so if you dont want to trigger a right click menu, move finger after pressing)

moving around the canvas is still an issue. I am considering mapping 2 finger movements to mouse wheel, will need to run some tests..
I managed to make it load on my phone, but since it is a > 7 year old one, its performance is quite terrible. otherwise works.
testing and feedback is appreciated.

the hosted files are now gzip compressed, which makes them smaller and thus faster to load.
we can gzip compress the files and host both compressed and uncompressed, then apply some apache magic to load compressed files if browser supports it.
it is a nice reduction in size!

image

I will push the setup for this later.

A final thing added was detection of required browser features before trying to load the web assembly program.
Old browsers cant load Cardinal web, but that is kinda expected, it is nice to have a list of unsupported features.

image

And speaking of unsupported browsers, with this we now know why it does not work on Safari - lack of wasm simd support.
That means it wont work on any iOS device at the moment too..
Apple seems to be pushing in wasm territory though, so perhaps this will be coming soon.
https://platform.uno/blog/the-state-of-webassembly-2021-and-2022/ seems to give a good overview of the current situation.

@falkTX
Copy link
Contributor Author

falkTX commented Aug 4, 2022

Oh, and another small change I forgot to mention: when browser tab/window is not visible, cardinal wont spend time rendering the webgl gui anymore. which makes it use less cpu when running in the background.

@falkTX
Copy link
Contributor Author

falkTX commented Aug 7, 2022

Good news, with more optimizations and compression, the wasm binary and data downloads are now below <50Mb.

image

This is great because, at least in Firefox, downloads with less than 50Mb are allowed to be cached.

image

Additionally I did some tests for clipboard support.
While it is possible to support it, and I verified that it actually works, mapping it to current APIs as used by DPF and Rack requires us to use asyncify which complicates the build and makes it slower. in the end it seems not worth it to pursue.
note that this is only for pasting from system clipboard into the site/webapp, the other way around does not have such strong limitations. we can even fake/force copying out of the webapp by creating a hidden html element, setting its text to the one we want and instruct the browser to copy from it.

so starting today we have a sorta fake clipboard in the webapp, with it having internal data for dealing with copy&paste and allowing to copy out of the webapp as an extra.

@falkTX
Copy link
Contributor Author

falkTX commented Aug 13, 2022

We have URL parameters handling now!

Both passing full patch, or a link to some file online.

Use patch keyword for patch file in URL, alike https://cardinal.kx.studio/?patch=eyJtb2R1bGVzIjpbeyJpZCI6IDEsInBsdWdpbiI6IkNhcmRpbmFsIiwibW9kZWwiOiJUZXh0RWRpdG9yIiwiZGF0YSI6eyJldGV4dCI6IldoYXQgYSBoYWNrIHdvdyJ9fV0sImNhYmxlcyI6W119Cg==

Use patchurl for loading an online patch file, alike https://cardinal.kx.studio/?patchurl=https://patchstorage.com/wp-content/uploads/2022/07/JTB-wasm_house_toshare.vcv

The embed patch in the URL is kinda disappointing, even with zst compressed data we easily get into the limits of how long we can make the URL. It works, but it is very limited..
It always uses base64 encoded string, if there is a better way to pass binary data as string please tell me.

The remote file seems the best approach here. you can host a file on a pastebin like service, and pass the raw contents url as parameter to cardinal web app. Can be quite useful to quickly show some patch to someone.

Have fun!

@Ulfmusic
Copy link

Ulfmusic commented Aug 25, 2022

Hi Could I please have some simple instructions on locally hosting the wasm version of Cardinal?
Thanks for a great DAW

@falkTX
Copy link
Contributor Author

falkTX commented Aug 25, 2022

Download the artifacts and serve them under a web server. There is no magic needed, these are just static files.
Either grab the 22.07 release files, or the latest build from the actions tab.

@aolney
Copy link

aolney commented Sep 12, 2022

In a word, amazing 🥳

I'm looking at incorporating this into a tutorial website/book I'm working on.
Some questions with that in mind:

  • Looks like computer keyboard for midi input was not ported over. Staying in-browser and ideally within Cardinal, is there an option besides the Impromptu 12-key module? This type of capability is really useful for beginner patches.
  • Can menu-based settings be set from the outside? It would be great to
    • Detect Chrome and automatically turn off Lock cursor while dragging to avoid "Press esc to show your cursor" messages
    • Possibly change scrolling behavior for mobile phones (not getting a bottom scroll bar on Android currently)
    • Possibly change the buffer size for mobile phones to something larger than the default

@falkTX
Copy link
Contributor Author

falkTX commented Sep 12, 2022

Cardinal does not do midi-like input via keyboard, never did.
For such changes, you can fork the repo and do the changes as you wish.

@falkTX
Copy link
Contributor Author

falkTX commented Sep 12, 2022

Small update: The main https://cardinal.kx.studio/ has been updated to the latest code.
Sadly this brings the size of the compressed assets above 50Mb again, and thus they are not being cached by the browser anymore.
Files are also not being automatically updated (their cache invalidated) so that is a small thing to fix too

@aolney
Copy link

aolney commented Sep 12, 2022

Thanks - going back in the build history, it looks like wasm builds were commented out in build 1188.

The last successful build before that was build 1182.
Would this build be the best build for wasm that is still cache friendly?

FWIW I currently have build 1153 deployed for testing/evaluation.
I'm deploying through GitHub Pages, so caching is helping me avoid going over their bandwidth quota.

@falkTX
Copy link
Contributor Author

falkTX commented Sep 12, 2022

wasm builds are enabled already. they were failing due to new modules having a lot more code which made the build machine go out of RAM. I have reverted voxglitch to the same version as used in 22.07 (with minor fixes), but we are at the limit of what the free github CI VMs can do..

@davybjj
Copy link

davybjj commented Dec 11, 2022 via email

@falkTX
Copy link
Contributor Author

falkTX commented Dec 13, 2022

Some small bit of news.

I investigated the pointer lock issue on chrome, seems to be bug in emscripten as reported in emscripten-core/emscripten#9681
I added a workaround for now, so default knob behaviour works under chrome-based browsers now.

Some input keys were not being accepted before, like - = ^ ~ ? characters, should now be corrected.

Updated the web app again just now, not sure I mentioned it in previous posts, but we got stoermelder-packone, MindMeld PatchMaster, Sapphire and SurgeXT modules now.

image

image

Not from Cardinal/DISTRHO side, but related to the discussion, the just released Firefox 108 now supports WebMIDI 🚀
You get this weird scary popup warning, but afterwards it appears to work.

image

@davybjj
Copy link

davybjj commented Dec 13, 2022 via email

@falkTX
Copy link
Contributor Author

falkTX commented Dec 13, 2022

A few more news, caching on chrome-based browsers is now possible.

I thought IndexedDB was deprecated, but MDN has removed the deprecation notice... so I went to investigate to see if we could make use of it. There is an under-undocumented emscripten flag to activate pushing the data file into IndexedDB, which will fetch its contents on next page load. This allows us to go beyond the 50Mb data limit on Firefox, and whatever one was on Chrome.

The wasm binary is not pushed to IndexedDB, but so far it does not seem needed. Currently we are at 17Mb brotli compressed binary, both are cached by Firefox and Chrome.

So as far as I can see and test, the caching issue is resolved.
At least for now until Web standards and browsers change again.

@davybjj
Copy link

davybjj commented Dec 13, 2022 via email

@falkTX
Copy link
Contributor Author

falkTX commented Dec 28, 2022

Good news, sorta..
If we disable SIMD (at the cost of performance) we can have the web version load in Safari/WebKit.

image

Supposedly this means it would work on iOS too, meaning iPhone and iPad.
Going to try to have no-simd by default on the mini version, for the full thing it seems kinda wasteful of CPU resources.

@falkTX
Copy link
Contributor Author

falkTX commented Dec 28, 2022

https://minicardinal.kx.studio/ has been updated to NOT have SIMD optimizations, thus it works under Safari/WebKit now.
Can someone with an iOS device (iPad, iPhone, etc) try it out and report how it works? I dont have such device myself..

@aolney
Copy link

aolney commented Dec 28, 2022

I confirm it works on a basic ipad (9th generation) 😄

Is it possible to put logic in the page that decides which SIMD version to load (e.g. using the agent string)?

@aolney
Copy link

aolney commented Jan 1, 2023

Seeing an interesting bug related to the 22.12 wasm full version.

In my book, I launch cardinal as a modal iframe. With 22.12, if I add a module from the modal iframe, a few key presses in the search bar causes a crash with this error:

Exception thrown:
Uncaught RuntimeError: Aborted(). Build with -sASSERTIONS for more info.

However, this error does not occur when using cardinal directly (outside the book).

Has there been any change since version 1208 that would cause this error? Looking at the diff between the respective CardinalNative.htmls does not show any meaningful difference.

@falkTX
Copy link
Contributor Author

falkTX commented Feb 25, 2023

A bit of news on the mini version. Instead of being the core and fundamental, I updated it to match the real mini version coming for next release.
So opening https://minicardinal.kx.studio/ you get a very select few modules, instead of just fundamental ones.

There is a wasm-noopt build now, which allows to run the entire thing on webkit browsers (and not just the mini variant).
I still need to find a nice way to have simd by default, with fallback to no-simd build for webkit compat, but wont be done for this next upcoming 23.02 release just yet.

@falkTX
Copy link
Contributor Author

falkTX commented Jun 29, 2023

Finally found out a regression with emscripten, they changed the default stack size from 5Mb to 64Kb during an update, that breaks everything... Rack uses 64k stack buffers for decoding vcv files, which easily triggered a stack overflow and everything went to shit after loading a compressed file.

With that out of the way I have pushed the latest changes to both https://cardinal.kx.studio/ and https://minicardinal.kx.studio/
Will write more in detail about what has changed on the web versions for the next release (now planned for July 15), but before that happens I want to ask for general testing on 1 particular thing - persistent storage.

Assuming you are running the latest version (shows 23.05 on the top-right corner of the page) we should now have files saved into browser cache, which are made available on subsquent page reloads.
This means you can actually create stuff, save it and come back to it later.
Files are saved in IDBFS (basically browser cache), and not on the server, so they apply to your local device only.

If you can please launch the web versions, do some little patching, save it and try to resume that work after restarting the browser.
The saved files should be accessible through the "open local patch" file menu.

image

Let me know if that works for you!

@dromer
Copy link
Collaborator

dromer commented Jun 29, 2023

Just tried this with minicardinal and I could see the Open local patch what I had just saved in a previous session.
Very cool!

@aolney
Copy link

aolney commented Jul 10, 2023

Let me know if that works for you!

Silly question - are there still builds in the nightlies? I don't see them where they used to be, so perhaps GitHub has changed the interface or they no longer exist?

@falkTX
Copy link
Contributor Author

falkTX commented Jul 10, 2023

they are still there as usual, lots of them

image

github is just weird on the middle node graph, breaking the down scrolling 😡

@aolney
Copy link

aolney commented Jul 10, 2023

github is just weird on the middle node graph, breaking the down scrolling rage

Thx, it was the scroll that was getting me; I was looking at the left pane instead of the main pane as well.

Here are my test results for Open local patch

Using

  • Chrome 114.0.5735.133 (Official Build) (64-bit)
  • 23.07 (build 1552)

the local storage seems to not be working completely.

If I

  • Save (with name)
  • Reload the page

then I can recall a patch using Open recent. However I can not recall the patch if I restart the browser.

At no time does Open local patch become active. It is always greyed out.

If I repeat the above with Firefox 115.0 (64-bit), I get the same results except I can recall the patch if I restart the browser. Again Open local patch is always greyed out.

@Vospi
Copy link

Vospi commented Feb 8, 2024

I found out about this yesterday, I'm just blown away! Did a full sketch of a song in there and sent a link to all the related communities I know. It could also a powerful, powerful demonstration utility for online or in-person discussions. Instantly accessible powerful sketchpad. I'm so happy this exists! Opened up on my phone browser, too, but can't use it with a touch screen. Mouse even kind of works, but... :) you maybe need a keyboard, I couldn't get much further. Would love love to see the day! My subway time would be enhanced instantly.

So let me instead list the issues I saw while playing in a browser (Firefox Nightly, mainly).

  1. Opening a Stoermelder Strip module just throws an exception immediately.
  2. Opening a Mindmeld Eqmaster module just throws an exception immediately.
  3. If you record anything into a Lilac Looper, then press Export audio file, the whole tab freezes immediately.
  4. If there's an exception thrown, I can't save the project, but I can save the selection. Is this intended, do worse things await in the menu that's blocked by the exception? Or maybe there's a way to dismiss the message?
  5. If you use Stoermelder MIrror and save the project, it works fine; if you Save selection and import it back, the connection between modules is now lost. (That might be the nature of the module itself, but I'm just saying.)

Minicardinal suggestions!
I also loved the idea of a minimalist setup and was curious to see the approach to choosing the right modules. I didn't find any seq or clock, but simulated it with an LFO + Surge's lfo. However, I can even fake the reverb cause I have no sample delay as far as I could tell. So that's a suggestion there.

Last one, silly suggestion for the full online version. It's online anyways, can we get Bidoo Antn? :) I'm in love with the idea.

I'm back to toying with the thing and experimenting. Love the work. Thank you so much!

@Vospi
Copy link

Vospi commented Feb 8, 2024

Another little thing I found. Happens in the live version, didn't happen on Windows.

Alea module interferes with plugins' positions.

2024-02-08.15-09-17.mp4

@dromer
Copy link
Collaborator

dromer commented Feb 8, 2024

@Vospi this behavior with Alea does happen with the standalone and in Rack2Free for me. Better to report this to the original developer instead I think. Or it's a "feature" and not a "bug".

Anyway not at all specific to the web/wasm build of Cardinal.

@falkTX
Copy link
Contributor Author

falkTX commented Apr 11, 2024

https://cardinal.kx.studio/live is updated to latest 24.04 release

I fixed the MindMeld modules that caused issues, they wanted to do multi-threaded things which are not allowed in our wasm setup, fixed by using web timers with emscripten APIs

That now allows to load the salamonis-mono-regen example patch, though without a fake/internal transport mechanism the patch is not so useful as-is.

But no crashes is always good, and we have a fully functional EQMaster module on the web now

@Vospi
Copy link

Vospi commented Apr 11, 2024

https://cardinal.kx.studio/live is updated to latest 24.04 release

I fixed the MindMeld modules that caused issues, they wanted to do multi-threaded things which are not allowed in our wasm setup, fixed by using web timers with emscripten APIs

That now allows to load the salamonis-mono-regen example patch, though without a fake/internal transport mechanism the patch is not so useful as-is.

But no crashes is always good, and we have a fully functional EQMaster module on the web now

Love this! Saw this commit recently. Thank you very much! Using wasm all the time.

@henrebotha
Copy link

henrebotha commented May 29, 2024

Just tried this for the first time. Bless WASM. It's unusably zoomed-out for me, though.

image

macOS 14.5, Firefox 126.0. Running on a 2020 Macbook Pro with Core i5/Iris Plus.

@Vospi
Copy link

Vospi commented May 30, 2024

Big problem: Surge XT Filter in wasm seems to be bugged out.
I've attached two patches, one with, one without the filter. The patch with the filter, no settings touched, just goes insane instantly (in terms of output).
biset stereo oscillator random.zip

@Alwinfy
Copy link

Alwinfy commented Jun 2, 2024

VCV Scope seems to have an issue with triggers - when EXT is disconnected and Trigger is toggled on, the screen freezes.

@Alwinfy
Copy link

Alwinfy commented Jun 6, 2024

The Bogaudio ANALYZER seems to have an issue as well - it throws an exception when a signal is tied to it?

@rl2939
Copy link
Contributor

rl2939 commented Oct 24, 2024

Selecting the stoermelder STRIP module:

  • Does not place the module in the grid
  • Throws an uncaught exception

@Vospi
Copy link

Vospi commented Oct 24, 2024

Selecting the stoermelder STRIP module:

* Does not place the module in the grid

* Throws an uncaught exception

Yeah I've reported that in February right above:
#287 (comment)
It seems like "hacky" modules like that do something that wasm version doesn't like.

@falkTX falkTX mentioned this issue Nov 10, 2024
@Vospi
Copy link

Vospi commented Nov 10, 2024

I forgot about the Surge Filters issue, so here I am again, this time it's a screenshot. The patch isn't needed, it's really not working anymore (but it used to!..) even in the most basic setups. Checked in two browsers, too (Chrome and Firefox).

Cardinal - _vospi - lemon bjnition sequencer v1 vcv - Google Chrome 2024-11-10 14 35 46

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests