Show more
claude boosted

Currently seeking: advice on what platform/service to use for live streaming. It must:

* Support audiences of a few hundred people
* Be available by audiences in every country
* Have a robust no-Nazi policy
* Not insert adverts
* Allow embedding
* Cost less than £200
* Support high and low bandwidth connections

Just had a couple of thoughts regarding the memory usage of , my .

As most terminals are significantly less than 256 lines tall, I might as well use 8-bit signed char for the lower mipmap levels of waveform data (though I still want full resolution of the base level for audio playback).

And for uncompressed audio formats like most WAV and AIFF I could maybe mmap the original files at the base mipmap level, instead of reading them into memory, which should be better behaved w.r.t. system swap (and save memory if they are 16bit, instead of converting to 32bit float as it does currently).

The code would be a bit more complicated if I implement both of these, but should make it lots more efficient.

Not sure what to do about the spectrum display mode, maybe that does need higher dynamic range than 8-bit.

Oh! The array is less than 64bits so can be packed into an i64 constant:

0x252C4957373A41 8 6 i - * >> 0xff &

instead of all the `== * + swap` nonesense. I could reverse the array by hand and replace `6 i -` with `i` too, but this is fine for now.

Show thread

Ported p01's "Music For Tiny Airports" from to .

Lots of repetitive code because there are no arrays or strings to index concisely.

It needs hex codes instead of ASCII characters.

The `f64` before the `tan` is needed because otherwise it gives an error as tan is currently only defined for floats - I should add more promotions.

: swap { x y -- y x }
y x

: music_for_tiny_airports { t | i -- o }
t 7 % -> i
t 2.0e-5 * -> t
0x25 0x2C 0x49 0x57 0x37 0x3A 0x41
6 i == * swap
5 i == * + swap
4 i == * + swap
3 i == * + swap
2 i == * + swap
1 i == * + swap
0 i == * +
t * 0.1 % 1 t i f64 tan 9 + / 1 % - *

: audio { c t -- o }
t music_for_tiny_airports

RUN audio

1 -> increment
0 -> time
(393 bytes, not size-optimized)

Original version is much smaller:

Finally implemented the numeric in . wasn't too hard in the end. Literals are still i64 or f64 depending if they have a dot, $1/3$ must be expressed as `1.0 3 /` instead of `1 3 /` (which evaluates to 0 using integer division - maybe I should use a different operator for that like does iirc).


Show thread git branch renaming 

on server:
for d in */
pushd "$d"
git branch -m master main

on clients:
for d in */
pushd "$d"
git pull
git checkout main

Be sure to check output for failures in case of uncommited changes etc; on my desktop I need to investigate 6 of 144 directories further.

Christian Di Vito – Vastitas 2020
Attribution-NonCommercial-NoDerivs 4.0 International
slnt, silent flow, christian di vito

> This is a live set made in Christian's home-studio during the italian lockdown.

quite liking this ambience (about 7mins into the hour so far)

I updated a package:

An to 's . Traditionally on and , long double has been an 80-bit type, and 32bit simply aliases to , but it seems on implements long double as which is ; so far tested only with and on (the functionality on other architectures should be unaffected).

Show thread

Need to work on my because the current is annoyment. Specifically mixing different types throws compile errors instead of promoting (like C and similar languages do).

Basically I want binary operations on integral types to get as big as the biggest but no bigger, mixed / becomes signed, floats get bigger, mixed / becomes float for most operations (eg `+`, `*`) but int for `|` `&` `^`.

But I maybe want numeric literals to automagically take their type from the context instead of being i64 or f64 depending on if they have a decimal point, but then what do I do for ops with two literals. Too complicated probably, at least for a first pass.

So the compile time behaviour of the operations should automatically insert additional casts/swaps as needed, as a sequence of low level primops in the chain to avoid bloating the compiled runtime with a zillion combinations.

Thinking how to actually implement it, it may be tricky...
I asked a question about because I got stuck and wasn't helping by spewing thousands of lines of formulas that I struggled to persuade it to simplify.

Fringe Arts Bath Co.Lab Sound Exquisite Corpse Showcase Streaming Live NOW!

I updated my stuff for the new pd-0.51 release:

It lets you run Pd patches (without the TCL/Tk GUI support) in a web browser.

Magnet Mandelbulb (hopefully correct this time).

Looks much less interesting, and is much harder to render (needed to reduce DE multiplier and increase subframe count to get it to look acceptable).

Show thread

Oh dear. I found a bug. My `div` implementation had big copy/pasta mistake when I duplicated `mul` and forgot to finish editing it, so the fractal depicted is not a Magnet Mandelbulb at all (FragM exports copies of the shaders when it saves images, so I keep the broken code there as it doesn't look too bad).

Trying again with correct code this time...

Show thread

QEMU needs rw access to the USB device node, so it may complain depending on your setup. I used `sudo chgrp` to give my user the permissions on the node in question.

Show thread

Here's my script to get to for

QEMU_PA_SERVER=/run/user/1000/pulse/native \
qemu-system-x86_64 \
-soundhw hda -device qemu-xhci \
-m 8G -hda zoom.img -cpu host -accel kvm -smp 8 \
-vga virtio -display gtk,gl=on -show-cursor -usb -device usb-tablet \
-usb -device usb-host,vendorid=0x041e,productid=0x4095
The USB passthrough has two parts, `-device qemu-xhci` enables USB 3 (need faster than USB 1 for my webcam), and the `-usb -device usb-host,...` selects the specific USB device to map from host to VM. Your vendorid and productid will differ, you can get them on the host with `lsusb`.

Tune the options as you like, I had it working with sound input and output (QEMU as Pulseaudio client routed to my speakers using JACK bridge on the host). Haven't tested this webcam with Zoom but I'm optimistic, given image appears fine in Cheese.

There's no way I'm installing (as root) on my main system, but I do want to use it occasionally and a VM I can fire up as needed (not often) and shut down afterwards seems a reasonable compromise. I did experiment with chroot but it was way too complicated and less secure (I don't want Zoom in my main session).

is a nice client but it (at least the version in Debian testing) doesn't support . CLI version is cool, but only does one single torrent at a time. transmission-daemon handles multiple torrents, but has no upload/download rate limit support among its command line arguments.

I guess I'll download with transmission-daemon then switch to rtorrent for seeding.

(making a local backup of everything I ever uploaded to the Internet Archive)

Show more

Welcome to, an instance for discussions around cultural freedom, experimental, new media art, net and computational culture, and things like that.