também disponível em português

this is a set of pages with effects that I use on my twitch streams. you don’t need to redeploy the app, since they can be accessed on https://lucianoratamero.github.io/stream-tools/ and added to your OBS (or whatever you use) as a browser source.

they may work on any setup, as long as you follow the docs ;]

if you have any questions, just open an issue and I’ll answer it when I can :)

options

all options for the pages are passed as search parameters. you don’t really need to know what search parameters are - they are just options passed in the URL. but if you want to know more about them, you can read this.

a good example of a search parameter is ?channel=luciano_ratamero. this is a search parameter that tells the page to load the chat from the luciano_ratamero channel. if you needed to pass more options, you could do it like this: ?channel=luciano_ratamero&theme=pixel, by adding a & character before each one of them.

pages

bokeh-experiments

this was the first effect, previously implemented in Imba, now in Svelte 5 + canvas. it randomly selects a color palette and renders colored blobs that fade out with time.

paths

/bokeh/

if you click the background, a form appears with settings that are saved on the localStorage.

this page accepts a bookmark search parameter, that loads a previously saved bookmark.

it also accepts a decay param, that changes how fast the circles disappear (it makes the animation faster).

this page also accepts a numberOfCircles search parameter, that changes the number limit of circles rendered.

it also accepts a transparentBg search parameter, that makes the background transparent.

example: https://lucianoratamero.github.io/stream-tools/bokeh/?bookmark=dark-pink&decay=0.6

/bokeh/create/

this page gives you the tools to create your own color palettes.

/bokeh/history/

this page allows you to view the previously selected color palettes. useful for when you find a palette you really like, but you forgot to bookmark.

lastfm now playing

this page shows the currently playing song on last.fm. it’s a simple page that uses the last.fm API to show the song in real-time.

if you don’t know last.fm, it’s compatible with all major music players, and it’s a great way to keep track of what you’re listening to.

paths

/lastfm-now-playing/

this page accepts a username search parameter, that is the last.fm username you want to watch the currently playing song from.

you also will need an api_key search parameter. to get one, you need to create an account on last.fm and then go to this page.

twitch chat

this page shows the twitch chat. it’s a simple page that uses the twitch chat API to show the chat in real-time.

there are two available themes (pixel, ff7), but, if you want more, you can change the theme by editing the src/routes/twitch-chat/TwitchChat.svelte file. I’ll be adding more themes soon.

paths

/twitch-chat/

this page accepts a channel search parameter, that is the channel you want to watch the chat from. if you have betterttv or frankerfacez emotes, they will be rendered as well. for betterttv emotes, you need to also pass the twitch_id search parameter, which you can find here.

it also accepts a theme search parameter, that changes the theme of the chat. the available themes are: pixel.

it also receives a messageScreenTime search parameter, that changes how long the messages are displayed on the screen.

it also receives an align search parameter, that changes the alignment of the chat. the available alignments are: top, bottom. defaults to bottom.

example: https://lucianoratamero.github.io/stream-tools/twitch-chat/?channel=luciano_ratamero&theme=pixel&messageScreenTime=6000

effects

this page offers an overlay with effects. each effect is enabled by its own search parameter.

paths

/effects/

by default, the page doesn’t have any effects enabled. you can enable them by passing search parameters.

CRT

this effect is enabled by passing the crt search param. it loads a CRT texture, emulating old computer monitors/tvs.

this effect also accepts a openGUI search param, that opens a form with settings.

example: https://lucianoratamero.github.io/stream-tools/effects/?crt

Confetti

this effect is enabled by passing the confetti search param. it loads a confetti waterfall effect. we recommend using a 1920x1080 source for the best results.

example: https://lucianoratamero.github.io/stream-tools/effects/?confetti

bokeh

this is the same effect as the /bokeh path (in fact, it loads an iframe). it accepts the same search param options as /bokeh.

example: https://lucianoratamero.github.io/stream-tools/effects/?bokeh&bookmark=dark-pink&decay=0.6

timer

this page gives you a countdown timer. by default, it also makes a sound effect when the countdown is done (it may spook you, but you can disable it :3).

paths

/timer/

the timer accepts two search params: timeInSeconds and noAudio.

timeInSeconds is literally how many seconds you want to start the countdown with.

noAudio disables the alert at the end of the timer.

also, you may use the timer for sound effects. to do that, you need to pass the invisible search param. this will make the timer invisible, but it will still play the sound effect.

currently, we have two built-in sound effects: toctoc and pipe. you can use them by passing the audio search param (for example, audio=pipe).

if you want to play a youtube video instead, you can pass a normal youtube URL as the video search param.

example: https://lucianoratamero.github.io/stream-tools/timer/?timeInSeconds=6

Developing/Contributing

# install dependencies
npm install
# start the dev server
npm run dev
# build to production
npm run build