Closed hartwork closed 1 year ago
CPU: M1 Pro (arm64) MacOS: Ventura 13.0.1 Kernel: Darwin Kernel Version 22.1.0
Does it compile out of the box?
no
If it doesn't compile, did ./configure complain and helped figuring out what was needed?
no, it fails at make
Does lv-tool-0.4 start and show a spinning 3D GL spectrum?
(after successful compile) it does start, but with a blank window
Does lv-tool-0.4 use actual audio input when run with --input portaudio (and does it use the microphone or the audio that other apps are playing)?
no _libvisual CRITICAL: lv-tool-0.4: inp_portaudioupload(): assertion `priv->stream != NULL' failed
make
fails with default compiler clang
brew install gcc@11
configure
& make
2.1. ./configure CC=/opt/homebrew/bin/gcc-11 CXX=/opt/homebrew/bin/g++-11
2.2. make CC=/opt/homebrew/bin/gcc-11 CXX=/opt/homebrew/bin/g++-11
run-0.4-macos.sh
nproc
is not available by defaultmake install
requires root privilegesFor comparison, here's the result on my rather old setup:
System Version: macOS 10.15.7 (19H2026) Kernel Version: Darwin 19.6.0 Model Name: Mac mini Model Identifier: Macmini8,1 Processor Name: 6-Core Intel Core i5
The output of your demo script:
+ LV_INSTALL_PREFIX=/Users/jan/Desktop/libvisual/INSTALL_PREFIX
+ configure_args=(--prefix="${LV_INSTALL_PREFIX}")
+ for i in libvisual libvisual-plugins
+ cd libvisual
+ NOCONFIGURE=please
+ ./autogen.sh
autoreconf: export WARNINGS=
autoreconf: Entering directory '.'
autoreconf: running: autopoint --force
autoreconf: running: aclocal --force -I m4
autoreconf: configure.ac: tracing
autoreconf: running: glibtoolize --copy --force
autoreconf: configure.ac: not using Intltool
autoreconf: configure.ac: not using Gtkdoc
autoreconf: running: aclocal --force -I m4
autoreconf: running: /usr/local/Cellar/autoconf/2.71/bin/autoconf --force
configure.ac:101: error: possibly undefined macro: AC_MSG_ERROR
If this token and others are legitimate, please use m4_pattern_allow.
See the Autoconf documentation.
autoreconf: error: /usr/local/Cellar/autoconf/2.71/bin/autoconf failed with exit status: 1
Thank you! :+1: :+1: That's more and more severe trouble than I expected.
@ChrisScheffler regarding your report:
priv->stream != NULL
? It would mean that PortAudio failed to open the stream but also pretended it worked (thinking line visual_log_return_val_if_fail (open_error == paNoError, -3);
)-framework
OpenGL rather than homebrew's Mesa then.nproc
is GNU coreutils, right, coreutils
was is not in the list for homebrew to install, my bad.make install
require root despite --prefix="${LV_INSTALL_PREFIX}"
? If so, did you find why?@idleberg regarding the AC_MSG_ERROR
, is this with pkg-config installed, did you run the homebrew install list mentioned above? From what this reads it seems to happen when pkg-config is not installed.
@idleberg PS: Alternatively, could it be that there are multiple copies of pkg-config and the wrong one wins the ${PATH}
race? Does which pkg-config
point at homebrew? Autoconf tries to satisfy macro PKG_PROG_PKG_CONFIG
and it needs file pkg.m4
for that — my copy is at /usr/share/aclocal/pkg.m4
. If the wrong pkg-config looks in effectively the wrong place, maybe that would cause the error.
Homebrew gave me some warnings when installing the dependencies. Basically, they don't guarantee that installing "formalas" will continue work for an outdated OS. I tried again and I'm now getting this:
=====================================================================
LIBVISUAL, AN AUDIO VISUALISATION ABSTRACTION LIBRARY, VERSION 0.4.1
=====================================================================
install path : ~/libvisual/INSTALL_PREFIX/lib
plugins base directory : /Users/jan/Desktop/libvisual/INSTALL_PREFIX/lib/libvisual-0.4
compiler : gcc
debug enabled : no
++ nproc
+ make -j6
/Library/Developer/CommandLineTools/usr/bin/make all-recursive
Making all in libvisual
make[2]: Nothing to be done for `all'.
Making all in po
make[2]: Nothing to be done for `all'.
Making all in examples
make[2]: Nothing to be done for `all'.
Making all in tools/lv-tool
g++ -DHAVE_CONFIG_H -I. -I../.. -I../.. -I../../libvisual -D_THREAD_SAFE -I/usr/local/include/SDL -g -O2 -MT lv_tool_0_4-lv-tool.o -MD -MP -MF .deps/lv_tool_0_4-lv-tool.Tpo -c -o lv_tool_0_4-lv-tool.o `test -f 'lv-tool.cpp' || echo './'`lv-tool.cpp
lv-tool.cpp:145:55: error: expected ';' after top level declarator
const std::unordered_set<std::string> actors_to_skip {
^
;
lv-tool.cpp:168:8: warning: scoped enumerations are a C++11 extension [-Wc++11-extensions]
enum class CycleDir
^
lv-tool.cpp:382:11: warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions]
auto modelist = SDL_ListModes (nullptr, SDL_FULLSCREEN);
^
lv-tool.cpp:415:67: error: expected ';' at end of declaration
std::array<SDL_Color, target_color_count> colors {};
^
;
lv-tool.cpp:733:7: warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions]
auto cycler = (dir == CycleDir::NEXT) ? visual_actor_get_next_by_name
^
lv-tool.cpp:733:29: warning: use of enumeration in a nested name specifier is a C++11 extension [-Wc++11-extensions]
auto cycler = (dir == CycleDir::NEXT) ? visual_actor_get_next_by_name
^
lv-tool.cpp:736:7: warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions]
auto new_name = cycler (name.c_str ());
^
lv-tool.cpp:770:19: error: no matching constructor for initialization of '(anonymous namespace)::Libvisual'
Libvisual main {argc, argv};
^
/usr/local/include/SDL/SDL_main.h:34:14: note: expanded from macro 'main'
#define main SDL_main
^
lv-tool.cpp:175:9: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0
were provided
class Libvisual
^
lv-tool.cpp:179:7: note: candidate constructor not viable: requires 2 arguments, but 0 were provided
Libvisual (int& argc, char**& argv)
^
lv-tool.cpp:770:23: error: expected ';' at end of declaration
Libvisual main {argc, argv};
^
;
lv-tool.cpp:807:9: warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions]
auto actor = bin.get_actor();
^
lv-tool.cpp:835:9: warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions]
auto vidoptions = visual_actor_get_video_attribute_options(actor);
^
lv-tool.cpp:841:9: warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions]
auto video = display.create(depth, vidoptions, width, height, true);
^
lv-tool.cpp:887:29: error: no matching constructor for initialization of '(anonymous namespace)::DisplayLock'
DisplayLock lock {display};
^
lv-tool.cpp:458:7: note: candidate constructor not viable: requires single argument 'display', but no arguments were
provided
DisplayLock(Display & display) : m_display(&display) {
^
lv-tool.cpp:453:9: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0
were provided
class DisplayLock
^
lv-tool.cpp:887:33: error: expected ';' at end of declaration
DisplayLock lock {display};
^
;
lv-tool.cpp:910:64: warning: use of enumeration in a nested name specifier is a C++11 extension [-Wc++11-extensions]
actor_name = cycle_actor_name (actor_name, CycleDir::NEXT);
^
lv-tool.cpp:922:13: warning: 'auto' type specifier is a C++11 extension [-Wc++11-extensions]
auto pluginqueue = visual_plugin_get_eventqueue (visual_actor_get_plugin(bin.get_actor()));
^
lv-tool.cpp:938:37: error: no matching constructor for initialization of '(anonymous namespace)::DisplayLock'
DisplayLock lock {display};
^
lv-tool.cpp:458:7: note: candidate constructor not viable: requires single argument 'display', but no arguments were
provided
DisplayLock(Display & display) : m_display(&display) {
^
lv-tool.cpp:453:9: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0
were provided
class DisplayLock
^
lv-tool.cpp:938:41: error: expected ';' at end of declaration
DisplayLock lock {display};
^
;
lv-tool.cpp:960:68: warning: use of enumeration in a nested name specifier is a C++11 extension [-Wc++11-extensions]
actor_name = cycle_actor_name (actor_name, CycleDir::NEXT);
^
lv-tool.cpp:1032:29: error: no matching constructor for initialization of '(anonymous namespace)::DisplayLock'
DisplayLock lock {display};
^
lv-tool.cpp:458:7: note: candidate constructor not viable: requires single argument 'display', but no arguments were
provided
DisplayLock(Display & display) : m_display(&display) {
^
lv-tool.cpp:453:9: note: candidate constructor (the implicit copy constructor) not viable: requires 1 argument, but 0
were provided
class DisplayLock
^
lv-tool.cpp:1032:33: error: expected ';' at end of declaration
DisplayLock lock {display};
^
;
11 warnings and 10 errors generated.
make[2]: *** [lv_tool_0_4-lv-tool.o] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2
startup with root privileges:
libvisual CRITICAL: lv-tool-0.4: VisPluginRef **visual_plugin_get_references(const char *, int *)(): Cannot load plugin: dlopen(/usr/local/lib/libvisual-0.4/input/input_mplayer.so, 0x0001): symbol not found in flat namespace '_mremap'
lv-tool - Libvisual 0.4.1 commandline tool - https://github.com/Libvisual/libvisual
libvisual CRITICAL: lv-tool-0.4: int visual_video_set_depth(VisVideo *, VisVideoDepth)(): assertion `video != NULL' failed
libvisual CRITICAL: lv-tool-0.4: int visual_video_set_depth(VisVideo *, VisVideoDepth)(): assertion `video != NULL' failed
libvisual CRITICAL: lv-tool-0.4: inp_portaudio_init(): assertion `open_error == paNoError' failed
libvisual CRITICAL: lv-tool-0.4: inp_portaudio_upload(): assertion `priv->stream != NULL' failed
@idleberg last comment addresses the clang issue. Its the default compiler frontend (not homebrew).
On M1 Pro @ Ventura: gcc -v
Apple clang version 14.0.0 (clang-1400.0.29.202)
Target: arm64-apple-darwin22.1.0
Thanks for the updates, interesting! :+1:
There is a new branch 0.4.x-macos
with these noteworthy changes:
Could you try with branch 0.4.x-macos
and report back?
Thanks in advance! :pray:
PS: One more homebrew package is needed with branch 0.4.x-macos
now: autoconf-archive
.
compiling branch 0.4.x-macos
with native clang fails for G-Force plugin (errors only):
G-Force.cpp:345:4: error: no matching member function for call to 'Print'
Print(_("WaveShape: "));
^~~~~
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:146:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier
void Print( char* inStr );
^
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:147:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument
void Print( UtilStr* inStr ) { if ( inStr ) Print( inStr -> getCStr() ); }
^
G-Force.cpp:347:4: error: no matching member function for call to 'Print'
Print(_("ColorMap: "));
^~~~~
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:146:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier
void Print( char* inStr );
^
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:147:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument
void Print( UtilStr* inStr ) { if ( inStr ) Print( inStr -> getCStr() ); }
^
G-Force.cpp:349:4: error: no matching member function for call to 'Print'
Print(_("DeltaField: "));
^~~~~
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:146:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier
void Print( char* inStr );
^
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:147:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument
void Print( UtilStr* inStr ) { if ( inStr ) Print( inStr -> getCStr() ); }
^
G-Force.cpp:353:5: error: no matching member function for call to 'Print'
Print(_("Particles: "));
^~~~~
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:146:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier
void Print( char* inStr );
^
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:147:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument
void Print( UtilStr* inStr ) { if ( inStr ) Print( inStr -> getCStr() ); }
^
G-Force.cpp:374:4: error: no matching member function for call to 'Print'
Print(_("Amplitude scale: "));
^~~~~
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:146:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier
void Print( char* inStr );
^
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:147:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument
void Print( UtilStr* inStr ) { if ( inStr ) Print( inStr -> getCStr() ); }
^
G-Force.cpp:381:4: error: no matching member function for call to 'Print'
Print(_("Amplitude scale: "));
^~~~~
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:146:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier
void Print( char* inStr );
^
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:147:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument
void Print( UtilStr* inStr ) { if ( inStr ) Print( inStr -> getCStr() ); }
^
G-Force.cpp:388:5: error: no matching member function for call to 'Println'
Println(_("Particles ON"));
^~~~~~~
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:148:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier
void Println( char* inStr );
^
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:149:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument
void Println( UtilStr* inStr ) { Println( inStr ? inStr -> getCStr() : 0 ); }
^
G-Force.cpp:390:5: error: no matching member function for call to 'Println'
Println(_("Particles OFF"));
^~~~~~~
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:148:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier
void Println( char* inStr );
^
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:149:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument
void Println( UtilStr* inStr ) { Println( inStr ? inStr -> getCStr() : 0 ); }
^
G-Force.cpp:412:5: error: no matching member function for call to 'Println'
Println(_("Show names ON"));
^~~~~~~
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:148:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier
void Println( char* inStr );
^
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:149:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument
void Println( UtilStr* inStr ) { Println( inStr ? inStr -> getCStr() : 0 ); }
^
G-Force.cpp:414:5: error: no matching member function for call to 'Println'
Println(_("Show names OFF"));
^~~~~~~
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:148:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier
void Println( char* inStr );
^
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:149:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument
void Println( UtilStr* inStr ) { Println( inStr ? inStr -> getCStr() : 0 ); }
^
G-Force.cpp:420:5: error: no matching member function for call to 'Println'
Println(_("Normalize ON"));
^~~~~~~
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:148:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier
void Println( char* inStr );
^
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:149:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument
void Println( UtilStr* inStr ) { Println( inStr ? inStr -> getCStr() : 0 ); }
^
G-Force.cpp:422:5: error: no matching member function for call to 'Println'
Println(_("Normalize OFF"));
^~~~~~~
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:148:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier
void Println( char* inStr );
^
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:149:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument
void Println( UtilStr* inStr ) { Println( inStr ? inStr -> getCStr() : 0 ); }
^
G-Force.cpp:435:5: error: no matching member function for call to 'Print'
Print(_("Loading DeltaField: "));
^~~~~
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:146:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier
void Print( char* inStr );
^
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:147:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument
void Print( UtilStr* inStr ) { if ( inStr ) Print( inStr -> getCStr() ); }
^
G-Force.cpp:446:5: error: no matching member function for call to 'Println'
Println(_("DeltaField slideshow ON"));
^~~~~~~
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:148:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier
void Println( char* inStr );
^
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:149:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument
void Println( UtilStr* inStr ) { Println( inStr ? inStr -> getCStr() : 0 ); }
^
G-Force.cpp:449:5: error: no matching member function for call to 'Println'
Println(_("DeltaField slideshow OFF"));
^~~~~~~
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:148:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier
void Println( char* inStr );
^
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:149:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument
void Println( UtilStr* inStr ) { Println( inStr ? inStr -> getCStr() : 0 ); }
^
G-Force.cpp:457:4: error: no matching member function for call to 'Println'
Println(_("All slideshows ON"));
^~~~~~~
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:148:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier
void Println( char* inStr );
^
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:149:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument
void Println( UtilStr* inStr ) { Println( inStr ? inStr -> getCStr() : 0 ); }
^
G-Force.cpp:464:4: error: no matching member function for call to 'Println'
Println(_("All slideshows OFF"));
^~~~~~~
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:148:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier
void Println( char* inStr );
^
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:149:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument
void Println( UtilStr* inStr ) { Println( inStr ? inStr -> getCStr() : 0 ); }
^
G-Force.cpp:483:5: error: no matching member function for call to 'Println'
Println(_("ColorMap slideshow ON"));
^~~~~~~
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:148:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier
void Println( char* inStr );
^
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:149:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument
void Println( UtilStr* inStr ) { Println( inStr ? inStr -> getCStr() : 0 ); }
^
G-Force.cpp:486:5: error: no matching member function for call to 'Println'
Println(_("ColorMap slideshow OFF"));
^~~~~~~
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:148:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier
void Println( char* inStr );
^
../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:149:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument
void Println( UtilStr* inStr ) { Println( inStr ? inStr -> getCStr() : 0 ); }
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
output for compiled binary (with gcc 11):
lv-tool - Libvisual 0.4.1 commandline tool - https://github.com/Libvisual/libvisual
libvisual CRITICAL: lv-tool-0.4: int visual_video_set_depth(VisVideo *, VisVideoDepth)(): assertion `video != NULL' failed
libvisual CRITICAL: lv-tool-0.4: int visual_video_set_depth(VisVideo *, VisVideoDepth)(): assertion `video != NULL' failed
libvisual CRITICAL: lv-tool-0.4: inp_portaudio_init(): PortAudio: Could not open input stream, error -9998 "Invalid number of channels".
libvisual CRITICAL: lv-tool-0.4: inp_portaudio_upload(): assertion `priv->stream != NULL' failed
@ChrisScheffler thanks! Will need to look into the C++ errors and find a clean way to make the PortAudio code first try stereo and the fall back to mono. With the changes regarding OpenGL, did you still get a black window or a rotating plane of squares this time?
@hartwork sorry, forgot the screenshot. The window is now filled with colored "bars" as expected.
@ChrisScheffler that is plain awesome! :+1:
With the new version, I'm getting dozens of warnings (C++11 related, OpenGL deprecations and others) and ultimately an error:
~/Desktop/libvisual
+ lv_tool_env=(DYLD_LIBRARY_PATH="${LV_INSTALL_PREFIX}"/lib/)
+ exec env DYLD_LIBRARY_PATH=/Users/jan/Desktop/libvisual/INSTALL_PREFIX/lib/ /Users/jan/Desktop/libvisual/INSTALL_PREFIX/bin/lv-tool-0.4 --input portaudio
lv-tool - Libvisual 0.4.1 commandline tool - https://github.com/Libvisual/libvisual
Failed to start pipeline with actor 'lv_gltest' and input 'portaudio'
Let me know if you need the entire log (3181 lines)
PS: neither version will compile with root privileges
@ChrisScheffler I made the PortAudio plugin fall back to mono now when stereo is not available, same branch. Could you give it a try?
@idleberg I did try with macOS 10.15 and its system Clang in the CI earlier, strange. If you could drag-n-drop the full log as a text file into a reply, that would rock (and be the easiest to look at). Alternatively, a <details>
tag would work well too. The log would allow seeing if plugins lv_gltest
and portaudio
were fully built.
PS: There should be no need for root with anything here, I made run-0.4-macos.sh
with that in mind, e.g. that's why I put DYLD_LIBRARY_PATH
in there. But maybe it needs adjustment (if the plugins are fully built). Could you share the output of find . -name \*lv_gltest.dy\*
?
@idleberg PS: Got your e-mail just now.
@hartwork with the new version of the plugin audio is captured from the microphone and visualized.
output:
lv-tool - Libvisual 0.4.1 commandline tool - https://github.com/Libvisual/libvisual
libvisual CRITICAL: lv-tool-0.4: visual_video_set_depth(): assertion `video != NULL' failed
libvisual CRITICAL: lv-tool-0.4: visual_video_set_depth(): assertion `video != NULL' failed
@hartwork with the new version of the plugin audio is captured from the microphone and visualized.
@ChrisScheffler awesome!
lv-tool - Libvisual 0.4.1 commandline tool - https://github.com/Libvisual/libvisual libvisual CRITICAL: lv-tool-0.4: visual_video_set_depth(): assertion `video != NULL' failed libvisual CRITICAL: lv-tool-0.4: visual_video_set_depth(): assertion `video != NULL' failed
The assertion output is not specific to macOS and a known todo, but thanks.
compiling branch
0.4.x-macos
with native clang fails for G-Force plugin (errors only):Compiler output
``` G-Force.cpp:345:4: error: no matching member function for call to 'Print' Print(_("WaveShape: ")); ^~~~~ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:146:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier void Print( char* inStr ); ^ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:147:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument void Print( UtilStr* inStr ) { if ( inStr ) Print( inStr -> getCStr() ); } ^ G-Force.cpp:347:4: error: no matching member function for call to 'Print' Print(_("ColorMap: ")); ^~~~~ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:146:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier void Print( char* inStr ); ^ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:147:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument void Print( UtilStr* inStr ) { if ( inStr ) Print( inStr -> getCStr() ); } ^ G-Force.cpp:349:4: error: no matching member function for call to 'Print' Print(_("DeltaField: ")); ^~~~~ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:146:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier void Print( char* inStr ); ^ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:147:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument void Print( UtilStr* inStr ) { if ( inStr ) Print( inStr -> getCStr() ); } ^ G-Force.cpp:353:5: error: no matching member function for call to 'Print' Print(_("Particles: ")); ^~~~~ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:146:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier void Print( char* inStr ); ^ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:147:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument void Print( UtilStr* inStr ) { if ( inStr ) Print( inStr -> getCStr() ); } ^ G-Force.cpp:374:4: error: no matching member function for call to 'Print' Print(_("Amplitude scale: ")); ^~~~~ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:146:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier void Print( char* inStr ); ^ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:147:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument void Print( UtilStr* inStr ) { if ( inStr ) Print( inStr -> getCStr() ); } ^ G-Force.cpp:381:4: error: no matching member function for call to 'Print' Print(_("Amplitude scale: ")); ^~~~~ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:146:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier void Print( char* inStr ); ^ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:147:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument void Print( UtilStr* inStr ) { if ( inStr ) Print( inStr -> getCStr() ); } ^ G-Force.cpp:388:5: error: no matching member function for call to 'Println' Println(_("Particles ON")); ^~~~~~~ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:148:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier void Println( char* inStr ); ^ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:149:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument void Println( UtilStr* inStr ) { Println( inStr ? inStr -> getCStr() : 0 ); } ^ G-Force.cpp:390:5: error: no matching member function for call to 'Println' Println(_("Particles OFF")); ^~~~~~~ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:148:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier void Println( char* inStr ); ^ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:149:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument void Println( UtilStr* inStr ) { Println( inStr ? inStr -> getCStr() : 0 ); } ^ G-Force.cpp:412:5: error: no matching member function for call to 'Println' Println(_("Show names ON")); ^~~~~~~ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:148:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier void Println( char* inStr ); ^ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:149:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument void Println( UtilStr* inStr ) { Println( inStr ? inStr -> getCStr() : 0 ); } ^ G-Force.cpp:414:5: error: no matching member function for call to 'Println' Println(_("Show names OFF")); ^~~~~~~ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:148:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier void Println( char* inStr ); ^ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:149:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument void Println( UtilStr* inStr ) { Println( inStr ? inStr -> getCStr() : 0 ); } ^ G-Force.cpp:420:5: error: no matching member function for call to 'Println' Println(_("Normalize ON")); ^~~~~~~ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:148:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier void Println( char* inStr ); ^ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:149:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument void Println( UtilStr* inStr ) { Println( inStr ? inStr -> getCStr() : 0 ); } ^ G-Force.cpp:422:5: error: no matching member function for call to 'Println' Println(_("Normalize OFF")); ^~~~~~~ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:148:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier void Println( char* inStr ); ^ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:149:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument void Println( UtilStr* inStr ) { Println( inStr ? inStr -> getCStr() : 0 ); } ^ G-Force.cpp:435:5: error: no matching member function for call to 'Print' Print(_("Loading DeltaField: ")); ^~~~~ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:146:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier void Print( char* inStr ); ^ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:147:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument void Print( UtilStr* inStr ) { if ( inStr ) Print( inStr -> getCStr() ); } ^ G-Force.cpp:446:5: error: no matching member function for call to 'Println' Println(_("DeltaField slideshow ON")); ^~~~~~~ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:148:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier void Println( char* inStr ); ^ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:149:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument void Println( UtilStr* inStr ) { Println( inStr ? inStr -> getCStr() : 0 ); } ^ G-Force.cpp:449:5: error: no matching member function for call to 'Println' Println(_("DeltaField slideshow OFF")); ^~~~~~~ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:148:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier void Println( char* inStr ); ^ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:149:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument void Println( UtilStr* inStr ) { Println( inStr ? inStr -> getCStr() : 0 ); } ^ G-Force.cpp:457:4: error: no matching member function for call to 'Println' Println(_("All slideshows ON")); ^~~~~~~ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:148:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier void Println( char* inStr ); ^ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:149:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument void Println( UtilStr* inStr ) { Println( inStr ? inStr -> getCStr() : 0 ); } ^ G-Force.cpp:464:4: error: no matching member function for call to 'Println' Println(_("All slideshows OFF")); ^~~~~~~ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:148:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier void Println( char* inStr ); ^ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:149:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument void Println( UtilStr* inStr ) { Println( inStr ? inStr -> getCStr() : 0 ); } ^ G-Force.cpp:483:5: error: no matching member function for call to 'Println' Println(_("ColorMap slideshow ON")); ^~~~~~~ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:148:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier void Println( char* inStr ); ^ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:149:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument void Println( UtilStr* inStr ) { Println( inStr ? inStr -> getCStr() : 0 ); } ^ G-Force.cpp:486:5: error: no matching member function for call to 'Println' Println(_("ColorMap slideshow OFF")); ^~~~~~~ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:148:12: note: candidate function not viable: 1st argument ('const char *') would lose const qualifier void Println( char* inStr ); ^ ../../../../plugins/actor/G-Force/GForceCommon/Headers/G-Force.h:149:12: note: candidate function not viable: no known conversion from 'const char *' to 'UtilStr *' for 1st argument void Println( UtilStr* inStr ) { Println( inStr ? inStr -> getCStr() : 0 ); } ^ fatal error: too many errors emitted, stopping now [-ferror-limit=] ```
@ChrisScheffler this^^ seems to be about const correctness. I believe that is fixed by 0c21b884a2f9c2811750810607850e483c401d4d now, same branch. Can you confirm?
@hartwork 6d93614b816ef4526190ecc5e33e3e402c91e389 compiles without errors for clang and gcc11
@ChrisScheffler perfect, thank you! :+1:
libvisual just entered Homebrew. Please be invited to try it on macOS for yourself:
brew install libvisual libvisual-plugins libvisual-projectm
lv-tool-0.4 --input portaudio # left click cycles through visual effects
Hi! :wave:
The CI covers macOS for 0.4.x for two weeks now, there is an input plugin for PortAudio that supports macOS and there have been build system fixes for macOS to make CI integration possible in the first place.
However I have no access to macOS, all my boxes run Linux (and a pile of GNU). I am looking for people to help answer these macOS questions regarding libvisual 0.4.x:
./configure
complain and helped figuring out what was needed?--input portaudio
(and does it use the microphone or the audio that other apps are playing)?If you can help answer these questions from practical experience, that would rock. To make that easier for you here's the quickest way I know:
Clone the right branch
Install homebrew packages
EDIT 2023-02-08: Add package
autoconf-archive
this list of packages to install locally: https://github.com/Libvisual/libvisual/blob/fc109d84c613aff5dce4436f01ccc523edfd6304/.github/workflows/linux_and_macos.yml#L95-L112Compile and run
Here's what I would put in a script
run-0.4-macos.sh
, this is very close to what I do on Linux, locally:What you should see:
For anything odd that you find except compiler warnings, please open dedicated bug reports at https://github.com/Libvisual/libvisual/issues . Many thanks in advance! :pray:
Best, Sebastian