- Shell 100%
| 1.bmp | New images with source in readme, render to files feature | |
| 2.bmp | New images with source in readme, render to files feature | |
| 3.bmp | New images with source in readme, render to files feature | |
| 4.bmp | New images with source in readme, render to files feature | |
| 5.bmp | Multiple changes | |
| Helper.sh | Add start_number to ffmpeg command | |
| konichiwa.wav | Fix alpha burn in, add helper script, konichiwa.wav, update readme | |
| LICENSE | Initial commit | |
| losci | Feature: Do not sleep on WAV playback | |
| losci.desktop | Initial upload | |
| losci.svg | Initial upload | |
| README.md | Feature: Do not sleep on WAV playback | |
Losci
Digital oscilloscope for visualizing sound.
Dependencies
- LuaJIT
- SDL3 or SDL2
- LuaJIT-SDL3 or LuaJIT-SDL2
- SDL3_image or SDL2_image Optional, for window icon
If LuaJIT-SDL3 or LuaJIT-SDL2 is not packaged, then the sdl3_ffi.lua or sdl2_ffi.lua from the linked repo can be put next to the losci executable.
Bear in mind, the program prefers SDL3, when it is available, it will try to use that, unless -ov --oldversion is passed.
The SDL, LuaJIT-SDL and SDL_image (if used) versions have to match.
One option/feature is not available with SDL2, -ba --backgroundalpha, since SDL2 windows cannot have transparent backgrounds.
Packaging
The program is currently available from the AUR: https://aur.archlinux.org/packages/losci-git
There is also a windows package available: https://codeberg.org/MorsMortium/Losci/releases
You are free to package it yourself or ask distribution packagers to do it.
Usage
Usage: losci [OPTIONS]
Digital oscilloscope for visualizing sound.
Options cannot be merged.
Options with a value need to have a space character between them [-f 60].
From line/circle and jump/gamer/ultragamer only one can be enabled at a time.
Interactive usage:
Press space to freeze the image (useful for screenshots)
Press escape to exit the program
Amount of options: 69
Options:
-h --help Display this help message and exit Default: false
-s --settings Create default settings and exit Default: false
-ov --oldversion Force SDL2 when SDL3 is available Default: false
-xw --xwayland Force X on Wayland Default: false
-wx --waylandx Force Wayland on X Default: false
-fc --framecounter Write number of frames in each second Default: false
-ni --noinput Interactivity (space/escape) is disabled Default: false
-sf --settingsfile Use provided file instead of from config location Default:
-br --backgroundred Red element from background RGB Default: 0 Range: 0 - 255
-bg --backgroundgreen Green element from background RGB Default: 0 Range: 0 - 255
-bb --backgroundblue Blue element from background RGB Default: 0 Range: 0 - 255
-ba --backgroundalpha Alpha element from background RGB Default: 255 Range: 0 - 255
-fr --foregroundred Red element from foreground RGB Default: 255 Range: 0 - 255
-fg --foregroundgreen Green element from foreground RGB Default: 255 Range: 0 - 255
-fb --foregroundblue Blue element from foreground RGB Default: 255 Range: 0 - 255
-fa --foregroundalpha Alpha element from foreground RGB Default: 255 Range: 0 - 255
-jr --jumpred Red element from jump RGB Default: 64 Range: 0 - 255
-jg --jumpgreen Green element from jump RGB Default: 64 Range: 0 - 255
-jb --jumpblue Blue element from jump RGB Default: 64 Range: 0 - 255
-ja --jumpalpha Alpha element from jump RGB Default: 255 Range: 0 - 255
-vr --vanishred Red element from frame color removal RGB Default: 0 Range: 0 - 255
-vg --vanishgreen Green element from frame color removal RGB Default: 0 Range: 0 - 255
-vb --vanishblue Blue element from frame color removal RGB Default: 0 Range: 0 - 255
-va --vanishalpha Alpha element from frame color removal RGB Default: 255 Range: 0 - 255
-vv --vanishvanish Add vanish colors (not alpha) instead of remove Default: false
-mr --meshred Red element from guide line RGB Default: 128 Range: 0 - 255
-mg --meshgreen Green element from guide line RGB Default: 128 Range: 0 - 255
-mb --meshblue Blue element from guide line RGB Default: 128 Range: 0 - 255
-ma --meshalpha Alpha element from guide line RGB Default: 255 Range: 0 - 255
-m --mesh Amount of vertical and horizontal guide lines Default: 0 Range: 0 - 1000
-ms --meshsize Guide line vertical width, horizontal height Default: 1 Range: 1 - 100
-mp --meshpercent Window percent --meshsize, not constant Default: false
-g --gamer Frame foreground is the next color of the rainbow Default: false
-ug --ultragamer Point foreground is the next color of the rainbow Default: false
-gu --gamerultra Frame background is the next color of the rainbow Default: false
-cf --changeforeground Foreground color change rate (gamer) Default: 10 Range: 1 - 255
-cb --changebackground Background color change rate (gamer) Default: 10 Range: 1 - 255
-rg --reversegamer Backwards going for --gamer and --ultragamer Default: false
-gr --gamerreverse Backwards going for --gamerultra Default: false
-j --jump Point distances blend them between foreground and Jump Default: false
-jd --jumpdivide More means larger distances get colored Default: 2 Range: 0.001 - 100
-jp --jumppercent Window percent --jumpdivide, not constant Default: false
-zx --zoomx Multiply X axis, x<0 flips, -1<x<1 shrinks Default: 1 Range: -100 - 100
-zy --zoomy Multiply Y axis, y<0 flips, -1<y<1 shrinks Default: 1 Range: -100 - 100
-sa --switchaxis Switch X and Y coordinates Default: false
-l --line Close points in a row are connected with lines Default: false
-c --circle Points are drawn as shapes, distance will be made odd Default: false
-cs --circleshape 1: circle, 2: line, 3 and up: regular shapes Default: 1 Range: 1 - 50
-cu --circleup Not circle shapes in circle mode should point up Default: false
-cl --circleline Circles, except line have lines instead of fill Default: false
-cd --circledivide Less is circle, more is star, < 1: regular Default: 0 Range: 0 - 1000
-d --distance Closeness for --line, --circle radius Default: 5 Range: 0.001 - 1000
-p --percent Window percent --distance, not constant Default: false
-ww --windowwidth Initial width of window Default: 600 Range: 1 - 10000
-wh --windowheight Initial height of window Default: 600 Range: 1 - 10000
-r --resize Window is resizable Default: false
-b --borderless The window does not have decorations Default: false
-t --top The window stays always on top of other windows Default: false
-f --fullscreen The window will start fullscreen Default: false
-e --equal The view has equal sides, centered Default: false
-a --accurate Subpixel accuracy, points are not rounded Default: false
-rf --rateframe FPS, more FPS, less sample per frame Default: 30 Range: 1 - 1000
-rs --ratesample Should match audio sample rate Default: 48000 Range: 1 - 1000000
-bs --buffersize Size of buffer in seconds Default: 1 Range: 1 - 10000
-i --input Used audio device. Lists devices without argument Default: Monitor of Built-in Audio Analog Stereo
-il --inputlayout Layout of input device (Left, Right, Mono, Stereo). Stereo is 2D Default: s Possible values: l r m s
-o --output Write rendered images to given path Default:
-w --wav Play WAV file instead of listening Default:
-q --quick Do not sleep when playing WAV file Default: false
Screenshots
These were created with some different options the program provides.
C. Allen music files taken from download link under videos for higher quality.
Oscillofun: https://archive.org/details/oscillofun
Jerobeam Fenderson - Core https://www.youtube.com/watch?v=0hEEp07c7ew
Jerobeam Fenderson - Shrooms: https://www.youtube.com/watch?v=19jv0HM92kw
C. Allen - Globetrotter: https://www.youtube.com/watch?v=J2YQD8Go_Hc
C. Allen - Downforce: https://www.youtube.com/watch?v=Y04LBDTsGIk
Contributions
Contributions are welcome!
Rules of contribution are using the naming conventions (CamelCase everywhere and no shortening of words).
Support
The program won't have a dedicated chat, but feel free to join our Matrix community https://matrix.to/#/%23TheWorldMachineOffTopic%3Amatrix.org?via=matrix.org&via=midov.pl&via=monero.social
Acknowledgment
Original idea and konichiwa.wav taken from https://github.com/kritzikratzi/Oscilloscope
Donation
If you like my work, feel free to donate: https://morsmortium.neocities.org/Donate