Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/hartwork/visdriver
:cinema: visdriver uses Winamp plug-ins to visualize audio; targets Wine on GNU/Linux primarily
https://github.com/hartwork/visdriver
audio-applications audio-playback audio-player audio-visualization audio-visualizer c99 gplv3-licensing mingw music-player music-visualisation music-visualizer win32api winamp winamp-plugins winamp-visualization winamp-visuals windows wine
Last synced: 10 days ago
JSON representation
:cinema: visdriver uses Winamp plug-ins to visualize audio; targets Wine on GNU/Linux primarily
- Host: GitHub
- URL: https://github.com/hartwork/visdriver
- Owner: hartwork
- License: gpl-3.0
- Created: 2023-02-17T02:49:28.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-10-28T13:22:41.000Z (10 days ago)
- Last Synced: 2024-10-28T16:57:05.267Z (10 days ago)
- Topics: audio-applications, audio-playback, audio-player, audio-visualization, audio-visualizer, c99, gplv3-licensing, mingw, music-player, music-visualisation, music-visualizer, win32api, winamp, winamp-plugins, winamp-visualization, winamp-visuals, windows, wine
- Language: C
- Homepage:
- Size: 384 KB
- Stars: 8
- Watchers: 6
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: COPYING
Awesome Lists containing this project
README
[![Build on Linux](https://github.com/hartwork/visdriver/actions/workflows/linux-mingw.yml/badge.svg)](https://github.com/hartwork/visdriver/actions/workflows/linux-mingw.yml)
[![Build on Windows](https://github.com/hartwork/visdriver/actions/workflows/windows-msvc.yml/badge.svg)](https://github.com/hartwork/visdriver/actions/workflows/windows-msvc.yml)
[![Enforce clang-format](https://github.com/hartwork/visdriver/actions/workflows/clang-format.yml/badge.svg)](https://github.com/hartwork/visdriver/actions/workflows/clang-format.yml)[![screenshots/visdriver_geiss_804x627.png](https://raw.githubusercontent.com/hartwork/visdriver/main/screenshots/visdriver_geiss_804x627.png)](https://github.com/hartwork/visdriver/blob/main/screenshots/visdriver_geiss_804x627.png)
(Re-titled with `wmctrl -r 'Default - Wine desktop' -N 'Geiss @ visdriver (800x600)'`)
# What is visdriver?
**visdriver** is
a Wine/Windows application
that uses **Winamp plug-ins**
to **visualize audio** without actual Winamp/WACUP,
in particular with MinGW on GNU/Linux.
It is written in C99,
uses plain win32api, and
is licensed under the "GPL v3 or later" license.It needs:
- One input plug-in binary
(e.g. `in_line.dll`
[[source]](https://github.com/jaspervdg/lineinWA)
[[binary]](https://home.hccnet.nl/th.v.d.gronde/dev/lineinWA2/)
or `in_mad.dll`
[[source]](https://sourceforge.net/projects/plainamp/files/in_mad/)
[[binary]](https://www.mars.org/home/rob/proj/mpeg/mad-plugin/#install) for MP3 playback),
- One output plugin binary
(e.g. `out_wave_gpl.dll`
[[source]](https://sourceforge.net/projects/plainamp/files/out_wave_gpl/)
[[binary]](https://sourceforge.net/projects/plainamp/files/Plainamp/0.2.3/)),
- One vis plugin binary
(e.g. `vis_geis.dll`
[[source]](https://github.com/geissomatik/geiss)
[[binary]](https://github.com/geissomatik/geiss/releases)
or `vis_avs.dll`
[[source]](https://github.com/grandchild/vis_avs)
[[binary]](https://github.com/grandchild/vis_avs/actions)),
- A MinGW compiler (or Visual Studio),
- Wine (or Windows),
- CMake >=3.0 (and potentially GNU make or Ninja).# Download
If would you like to download ready-to-run Windows binaries
built by the CI off the latest code on branch `main`,
there are two options:
- [Binaries built by MinGW/GCC](https://github.com/hartwork/visdriver/actions/workflows/linux-mingw.yml?query=branch%3Amain)
- [Binaries built by Visual Studio](https://github.com/hartwork/visdriver/actions/workflows/windows-msvc.yml?query=branch%3Amain)Just click the latest workflow run there for either of these, and
its page will list artifacts for download near the bottom.# How to Compile
## With MinGW/GCC
```console
# cmake -DCMAKE_TOOLCHAIN_FILE=cmake/mingw-toolchain.cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -S . -B build
# make -C build -j$(nproc) VERBOSE=1
```## With Visual Studio
```console
# cmake -G "Visual Studio 17 2022" -A Win32 -DCMAKE_BUILD_TYPE=RelWithDebInfo -S . -B build
# cmake --build build
```# How to Run
Let **visdriver** tell you what it needs:
```console
# WINEDEBUG=-all wine ./build/visdriver.exe --help
Usage: visdriver [OPTIONS] --in PATH/IN.dll --out PATH/OUT.dll --vis PATH/VIS.dll [--] [AUDIO_FILE ..]
or: visdriver --help
or: visdriver --versionvisdriver uses Winamp plug-ins to visualize audio.
-h, --help show this help message and exit
-V, --version show the version and exitPlug-in related arguments:
-I, --in= input plug-in to use
-O, --out= output plug-in to use
-W, --vis= vis plug-in to useSoftware libre licensed under GPL v3 or later.
Brought to you by Sebastian Pipping .Please report bugs at https://github.com/hartwork/visdriver -- thank you!
```If you end up with errors about missing DLLs, copying these files in place
should help. E.g. for MinGW DLLs on Ubuntu 20.04 it would be:```console
# cp -v \
/usr/i686-w64-mingw32/lib/libwinpthread-1.dll \
/usr/lib/gcc/i686-w64-mingw32/9.3-posix/libgcc_s_sjlj-1.dll \
/usr/lib/gcc/i686-w64-mingw32/9.3-posix/libstdc++-6.dll \
.
```The locations of these files vary among GNU/Linux distros.
# How to Force Fullscreen Visualization into a Window
If you would like to force a fullscreen vis plugin into using a Window, there are two options:
- a) Wine's built-in [virtual desktop](https://wiki.winehq.org/FAQ#How_do_I_get_Wine_to_launch_an_application_in_a_virtual_desktop.3F) feature
- b) Using [Xephyr](https://en.wikipedia.org/wiki/Xephyr) for a quick way to a nested Xorg server,
that your distro has already packaged.For Wine's [virtual desktop](https://wiki.winehq.org/FAQ#How_do_I_get_Wine_to_launch_an_application_in_a_virtual_desktop.3F) feature, this wrapper should do:
```bash
#! /usr/bin/env bash
exec wine explorer /desktop=visdriver,1024x768 ./build/visdriver.exe "$@"
```For Xephyr, a wrapper script like this should do:
```bash
#! /usr/bin/env bash
set -x -e -u
NESTED_DISPLAY=:1
Xephyr -screen 1024x768 "${NESTED_DISPLAY}" &
xorg_pid=$!
kill_xorg() { kill -2 "${xorg_pid}"; }
trap kill_xorg EXIT
export DISPLAY=${NESTED_DISPLAY}wine ./build/visdriver.exe "$@"
```If you need help getting that set up, please reach out.
# Known Limitations
Please expect some rough edges, and potentially even crashes with some plug-ins.
In particular, known limitations are:
- Waveform/spectrum needs 16bit stereo samples input, at the moment.
- Unicode in- and output plug-ins are yet to be supported.
- `in_linein.dll` (SHA1 `7ab08fcc5bc9ebfcc9a8e3d729fadf2cb05e173a`)
of Winamp 5.66 crashes right after loading for an unknown reason.---
[Sebastian Pipping](https://github.com/hartwork), Berlin, 2023