Git Product home page Git Product logo

visdriver's Introduction

Build on Linux Build on Windows Enforce clang-format

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:

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:

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

# 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

# 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:

# 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 --version

visdriver uses Winamp plug-ins to visualize audio.

    -h, --help        show this help message and exit
    -V, --version     show the version and exit

Plug-in related arguments:
    -I, --in=<str>    input plug-in to use
    -O, --out=<str>   output plug-in to use
    -W, --vis=<str>   vis plug-in to use

Software libre licensed under GPL v3 or later.
Brought to you by Sebastian Pipping <[email protected]>.

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:

# 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 feature
  • b) Using Xephyr for a quick way to a nested Xorg server, that your distro has already packaged.

For Wine's virtual desktop feature, this wrapper should do:

#! /usr/bin/env bash
exec wine explorer /desktop=visdriver,1024x768 ./build/visdriver.exe "$@"

For Xephyr, a wrapper script like this should do:

#! /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, Berlin, 2023

visdriver's People

Contributors

dependabot[bot] avatar hartwork avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.