zynthian / jack-smf-utils Goto Github PK
View Code? Open in Web Editor NEWJack Standard MIDI File Utils: SMF library, recorder & player
License: Other
Jack Standard MIDI File Utils: SMF library, recorder & player
License: Other
When I'm trying to use jack-smf-player with -t
, it doesn't play.
By digging a little, I identified some trouble.
At this start location:
playback_started = jack_frame_time(jack_client);
The frame time is receiving a large value, which overflows into negative when it gets stored into int
.
(example -884162377)
This condition enters, and the file never plays.
if (playback_started < 0)
return;
It was on Jack 1.9.14.
Linux ext 5.4.6-arch3-1 #1 SMP PREEMPT Tue, 24 Dec 2019 04:36:53 +0000 x86_64 GNU/Linux
Addendum: it was resolved when I extended playback_started
to be a 64-bit integer.
Currently, jack transport BPM changes have no effect at all.
There is a note in the source code:
static int
sync_callback(jack_transport_state_t state, jack_position_t *position, void *notused)
{
assert(jack_client);
/* XXX: We should probably adapt to external tempo changes. */
if (state == JackTransportStarting) {
song_position = position->frame;
smf_seek_to_seconds(smf, nframes_to_seconds(position->frame));
if (!be_quiet)
g_debug("Seeking to %f seconds.", nframes_to_seconds(position->frame));
playback_started = jack_frame_time(jack_client);
} else if (state == JackTransportStopped) {
playback_started = -1;
}
return TRUE;
}
It's a good starting point ...
Hi, I have had issues with compiling the software both on Manjaro 2022 and 2023. I made sure the required libraries are installed, but the errors keep coming... whereas in previous versions of Manjaro there were no compilation errors. Here is the error I am currently getting:
Building jack-smf-utils...
==> Making package: jack-smf-utils 1.0-5 (Mo 10 Apr 2023 21:46:01 CEST)
==> Checking runtime dependencies...
==> Checking buildtime dependencies...
==> Retrieving sources...
-> Downloading jack-smf-utils-1.0.tar.gz...
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
100 387 100 387 0 0 885 0 --:--:-- --:--:-- --:--:-- 887
100 117k 100 117k 0 0 166k 0 --:--:-- --:--:-- --:--:-- 166k
==> Validating source files with md5sums...
jack-smf-utils-1.0.tar.gz ... Passed
==> Removing existing $srcdir/ directory...
==> Extracting sources...
-> Extracting jack-smf-utils-1.0.tar.gz with bsdtar
==> Starting build()...
configure.ac:8: warning: The macro `AC_CONFIG_HEADER' is obsolete.
configure.ac:8: You should run autoupdate.
./lib/autoconf/status.m4:719: AC_CONFIG_HEADER is expanded from...
configure.ac:8: the top level
configure.ac:34: warning: The macro `AC_HEADER_STDC' is obsolete.
configure.ac:34: You should run autoupdate.
./lib/autoconf/headers.m4:704: AC_HEADER_STDC is expanded from...
configure.ac:34: the top level
configure.ac:40: warning: The macro `AC_HEADER_TIME' is obsolete.
configure.ac:40: You should run autoupdate.
./lib/autoconf/headers.m4:743: AC_HEADER_TIME is expanded from...
configure.ac:40: the top level
configure.ac:49: warning: The macro `AC_TYPE_SIGNAL' is obsolete.
configure.ac:49: You should run autoupdate.
./lib/autoconf/types.m4:776: AC_TYPE_SIGNAL is expanded from...
configure.ac:49: the top level
configure.ac:11: installing './compile'
configure.ac:46: installing './config.guess'
configure.ac:46: installing './config.sub'
/usr/share/automake-1.16/am/library.am: warning: 'libsmf.a': linking libraries using a non-POSIX
/usr/share/automake-1.16/am/library.am: archiver requires 'AM_PROG_AR' in 'configure.ac'
libsmf/Makefile.am:1: while processing library 'libsmf.a'
/usr/share/automake-1.16/am/library.am: warning: 'libsmf.a': linking libraries using a non-POSIX
/usr/share/automake-1.16/am/library.am: archiver requires 'AM_PROG_AR' in 'configure.ac'
libsmf/Makefile.am:1: while processing library 'libsmf.a'
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
/var/tmp/pamac-build-mizzan/jack-smf-utils/src/jack-smf-utils-1.0/missing: Unknown `--is-lightweight' option
Try `/var/tmp/pamac-build-mizzan/jack-smf-utils/src/jack-smf-utils-1.0/missing --help' for more information
configure: WARNING: 'missing' script is too old or missing
checking for a race-free mkdir -p... /usr/bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether the compiler supports GNU C... yes
checking whether gcc accepts -g... yes
checking for gcc option to enable C11 features... none needed
checking whether gcc understands -c and -o together... yes
checking whether make supports the include directive... yes (GNU style)
checking dependency style of gcc... gcc3
checking for ranlib... ranlib
checking for pow in -lm... yes
checking for main in -lreadline... yes
checking for stdio.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for strings.h... yes
checking for sys/stat.h... yes
checking for sys/types.h... yes
checking for unistd.h... yes
checking for sys/time.h... yes
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for arpa/inet.h... yes
checking for stdlib.h... (cached) yes
checking for string.h... (cached) yes
checking for sys/time.h... (cached) yes
checking for unistd.h... (cached) yes
checking for an ANSI C-conforming const... yes
checking for int8_t... yes
checking for uint16_t... yes
checking for uint32_t... yes
checking for working volatile... yes
checking build system type... x86_64-pc-linux-gnu
checking host system type... x86_64-pc-linux-gnu
checking for GNU libc compatible malloc... yes
checking for working memcmp... yes
checking for GNU libc compatible realloc... yes
checking return type of signal handlers... void
checking for working strtod... yes
checking for gettimeofday... yes
checking for memset... yes
checking for pow... yes
checking for strdup... yes
checking for strerror... yes
checking for strtol... yes
checking for pkg-config... /usr/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
checking for GLIB... yes
checking for GTHREAD... yes
checking for JACK... yes
checking for JACK_MIDI_NEEDS_NFRAMES... no
checking for LASH... no
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating libsmf/Makefile
config.status: creating man/Makefile
config.status: creating src/Makefile
config.status: creating config.h
config.status: executing depfiles commands
make all-recursive
make[1]: Entering directory '/var/tmp/pamac-build-mizzan/jack-smf-utils/src/jack-smf-utils-1.0'
Making all in libsmf
make[2]: Entering directory '/var/tmp/pamac-build-mizzan/jack-smf-utils/src/jack-smf-utils-1.0/libsmf'
gcc -DHAVE_CONFIG_H -I. -I.. -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-4 -pthread -DG_LOG_DOMAIN=\"libsmf\" -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -MT libsmf_a-smf.o -MD -MP -MF .deps/libsmf_a-smf.Tpo -c -o libsmf_a-smf.o `test -f 'smf.c' || echo './'`smf.c
gcc -DHAVE_CONFIG_H -I. -I.. -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-4 -pthread -DG_LOG_DOMAIN=\"libsmf\" -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -MT libsmf_a-smf_decode.o -MD -MP -MF .deps/libsmf_a-smf_decode.Tpo -c -o libsmf_a-smf_decode.o `test -f 'smf_decode.c' || echo './'`smf_decode.c
mv -f .deps/libsmf_a-smf_decode.Tpo .deps/libsmf_a-smf_decode.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-4 -pthread -DG_LOG_DOMAIN=\"libsmf\" -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -MT libsmf_a-smf_load.o -MD -MP -MF .deps/libsmf_a-smf_load.Tpo -c -o libsmf_a-smf_load.o `test -f 'smf_load.c' || echo './'`smf_load.c
mv -f .deps/libsmf_a-smf.Tpo .deps/libsmf_a-smf.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-4 -pthread -DG_LOG_DOMAIN=\"libsmf\" -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -MT libsmf_a-smf_save.o -MD -MP -MF .deps/libsmf_a-smf_save.Tpo -c -o libsmf_a-smf_save.o `test -f 'smf_save.c' || echo './'`smf_save.c
mv -f .deps/libsmf_a-smf_load.Tpo .deps/libsmf_a-smf_load.Po
gcc -DHAVE_CONFIG_H -I. -I.. -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-4 -pthread -DG_LOG_DOMAIN=\"libsmf\" -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -MT libsmf_a-smf_tempo.o -MD -MP -MF .deps/libsmf_a-smf_tempo.Tpo -c -o libsmf_a-smf_tempo.o `test -f 'smf_tempo.c' || echo './'`smf_tempo.c
mv -f .deps/libsmf_a-smf_save.Tpo .deps/libsmf_a-smf_save.Po
mv -f .deps/libsmf_a-smf_tempo.Tpo .deps/libsmf_a-smf_tempo.Po
rm -f libsmf.a
ar cru libsmf.a libsmf_a-smf.o libsmf_a-smf_decode.o libsmf_a-smf_load.o libsmf_a-smf_save.o libsmf_a-smf_tempo.o
ar: `u' modifier ignored since `D' is the default (see `U')
ranlib libsmf.a
make[2]: Leaving directory '/var/tmp/pamac-build-mizzan/jack-smf-utils/src/jack-smf-utils-1.0/libsmf'
Making all in src
make[2]: Entering directory '/var/tmp/pamac-build-mizzan/jack-smf-utils/src/jack-smf-utils-1.0/src'
gcc -DHAVE_CONFIG_H -I. -I.. -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-4 -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-4 -pthread -I../libsmf -DG_LOG_DOMAIN=\"jack-smf-player\" -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -MT jack_smf_player-jack-smf-player.o -MD -MP -MF .deps/jack_smf_player-jack-smf-player.Tpo -c -o jack_smf_player-jack-smf-player.o `test -f 'jack-smf-player.c' || echo './'`jack-smf-player.c
gcc -DHAVE_CONFIG_H -I. -I.. -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-4 -pthread -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/sysprof-4 -pthread -I../libsmf -DG_LOG_DOMAIN=\"jack-smf-recorder\" -march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -MT jack_smf_recorder-jack-smf-recorder.o -MD -MP -MF .deps/jack_smf_recorder-jack-smf-recorder.Tpo -c -o jack_smf_recorder-jack-smf-recorder.o `test -f 'jack-smf-recorder.c' || echo './'`jack-smf-recorder.c
jack-smf-recorder.c: In function ‘warning_async’:
jack-smf-player.c: In function ‘warning_async’:
jack-smf-recorder.c:122:9: error: format not a string literal and no format arguments [-Werror=format-security]
122 | g_warning(str);
| ^~~~~~~~~
jack-smf-player.c:131:9: error: format not a string literal and no format arguments [-Werror=format-security]
131 | g_warning(str);
| ^~~~~~~~~
jack-smf-recorder.c: In function ‘main’:
jack-smf-recorder.c:430:9: warning: ‘g_thread_init’ is deprecated [-Wdeprecated-declarations]
430 | g_thread_init(NULL);
| ^~~~~~~~~~~~~
In file included from /usr/include/glib-2.0/glib.h:115,
from jack-smf-recorder.c:46:
/usr/include/glib-2.0/glib/deprecated/gthread.h:267:10: note: declared here
267 | void g_thread_init (gpointer vtable);
| ^~~~~~~~~~~~~
jack-smf-player.c: In function ‘main’:
jack-smf-player.c:661:9: warning: ‘g_thread_init’ is deprecated [-Wdeprecated-declarations]
661 | g_thread_init(NULL);
| ^~~~~~~~~~~~~
In file included from /usr/include/glib-2.0/glib.h:115,
from jack-smf-player.c:46:
/usr/include/glib-2.0/glib/deprecated/gthread.h:267:10: note: declared here
267 | void g_thread_init (gpointer vtable);
| ^~~~~~~~~~~~~
cc1: some warnings being treated as errors
make[2]: *** [Makefile:433: jack_smf_recorder-jack-smf-recorder.o] Error 1
make[2]: *** Waiting for unfinished jobs....
cc1: some warnings being treated as errors
make[2]: *** [Makefile:419: jack_smf_player-jack-smf-player.o] Error 1
make[2]: Leaving directory '/var/tmp/pamac-build-mizzan/jack-smf-utils/src/jack-smf-utils-1.0/src'
make[1]: *** [Makefile:379: all-recursive] Error 1
make[1]: Leaving directory '/var/tmp/pamac-build-mizzan/jack-smf-utils/src/jack-smf-utils-1.0'
make: *** [Makefile:320: all] Error 2
==> ERROR: A failure occurred in build().
Aborting...
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.