mpg123-users Mailing List for mpg123 (Page 4)
Brought to you by:
sobukus
You can subscribe to this list here.
2006 |
Jan
|
Feb
|
Mar
|
Apr
(1) |
May
(1) |
Jun
(3) |
Jul
(6) |
Aug
(8) |
Sep
(2) |
Oct
(3) |
Nov
|
Dec
(2) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2007 |
Jan
(6) |
Feb
(3) |
Mar
|
Apr
|
May
|
Jun
(5) |
Jul
|
Aug
(1) |
Sep
(1) |
Oct
(2) |
Nov
(1) |
Dec
(10) |
2008 |
Jan
(7) |
Feb
(11) |
Mar
(28) |
Apr
(16) |
May
(7) |
Jun
(13) |
Jul
(19) |
Aug
(10) |
Sep
(22) |
Oct
(10) |
Nov
(1) |
Dec
(36) |
2009 |
Jan
(1) |
Feb
|
Mar
(2) |
Apr
(3) |
May
(1) |
Jun
(2) |
Jul
|
Aug
(10) |
Sep
(20) |
Oct
(12) |
Nov
(5) |
Dec
(1) |
2010 |
Jan
|
Feb
(4) |
Mar
(4) |
Apr
(65) |
May
(7) |
Jun
(11) |
Jul
(1) |
Aug
(5) |
Sep
(4) |
Oct
(1) |
Nov
|
Dec
(1) |
2011 |
Jan
(10) |
Feb
(4) |
Mar
|
Apr
(3) |
May
(1) |
Jun
|
Jul
|
Aug
(7) |
Sep
(3) |
Oct
(4) |
Nov
|
Dec
(6) |
2012 |
Jan
|
Feb
(1) |
Mar
(3) |
Apr
(1) |
May
(3) |
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2013 |
Jan
(6) |
Feb
(3) |
Mar
(8) |
Apr
(5) |
May
(1) |
Jun
(5) |
Jul
|
Aug
(5) |
Sep
|
Oct
(9) |
Nov
|
Dec
(1) |
2014 |
Jan
(7) |
Feb
(1) |
Mar
(10) |
Apr
(1) |
May
(5) |
Jun
(8) |
Jul
(2) |
Aug
(3) |
Sep
|
Oct
(1) |
Nov
(7) |
Dec
|
2015 |
Jan
(2) |
Feb
(1) |
Mar
(29) |
Apr
(1) |
May
(1) |
Jun
|
Jul
(2) |
Aug
(9) |
Sep
(6) |
Oct
(15) |
Nov
(6) |
Dec
(23) |
2016 |
Jan
(11) |
Feb
(2) |
Mar
(1) |
Apr
|
May
(1) |
Jun
(2) |
Jul
|
Aug
|
Sep
(5) |
Oct
(24) |
Nov
|
Dec
(3) |
2017 |
Jan
|
Feb
|
Mar
(5) |
Apr
|
May
(1) |
Jun
|
Jul
(4) |
Aug
(3) |
Sep
(7) |
Oct
|
Nov
(4) |
Dec
(1) |
2018 |
Jan
(2) |
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
(5) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2019 |
Jan
(5) |
Feb
|
Mar
|
Apr
(2) |
May
|
Jun
|
Jul
(1) |
Aug
(1) |
Sep
(3) |
Oct
(1) |
Nov
(8) |
Dec
|
2020 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(18) |
Jun
|
Jul
(12) |
Aug
(3) |
Sep
|
Oct
|
Nov
|
Dec
(7) |
2021 |
Jan
(1) |
Feb
(5) |
Mar
(6) |
Apr
(19) |
May
(2) |
Jun
(4) |
Jul
(2) |
Aug
|
Sep
(10) |
Oct
(6) |
Nov
|
Dec
(1) |
2022 |
Jan
(1) |
Feb
(2) |
Mar
|
Apr
|
May
(1) |
Jun
(1) |
Jul
(1) |
Aug
(1) |
Sep
|
Oct
(2) |
Nov
|
Dec
|
2023 |
Jan
(1) |
Feb
|
Mar
(4) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(3) |
Oct
(1) |
Nov
|
Dec
(7) |
2024 |
Jan
(1) |
Feb
(1) |
Mar
|
Apr
(1) |
May
|
Jun
|
Jul
(3) |
Aug
(1) |
Sep
|
Oct
(6) |
Nov
(4) |
Dec
(1) |
2025 |
Jan
|
Feb
|
Mar
(6) |
Apr
(6) |
May
(2) |
Jun
(2) |
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Chris S. <ch...@da...> - 2021-09-07 13:06:31
|
Hi! I'm trying to use libmpg123 to play a single mp3 file in a loop, so it is continuous without any pauses. mpg123 has a great API and is really easy to use, but I cannot figure out how to implement my use case. The MP3 is stored in memory not as a file, so I have direct access to its byte stream and even replacing the read hander is not a problem if required, I also have an output stream that I must continually fill to avoid audio dropouts. I've tried replacing the read handler, using open_handle mpg123_read, and tried using feedseek even though I'm not calling mpg123_feed, but I inevitably end up with a "Warning: Encountered more data after announced end of track (frame 582/582). Frankenstein!" I need to start from scratch I think. So to simplify things for this post and because mpg123_feed feels like the right thing to do, I've taken the example feedseek.c as a starting point and modified it to open a local mp3 file instead of stdin so I can lseek to any arbitrary position to simulate having the file in memory, and wrapped a "loop forever" around it. This is just a thrown together starting point to open up the discussion, so doomed to fail! The theory is that because feedseek is being told where to seek to, and it returns the input stream offset to position at, then each iteration of the loop, a seek_point of 0 will reset the playback to the start. It doesn't work anyway: Feedseek failed: Error reading the stream. (code 18) Can you help me figure out the correct way to jump-back to the start of the stream to achieve a gapless-repeat of a memory mapped mp3? I've attached my modified and failing version feedseek.c which reads file test.mp3 and attempts to loop forever. Many thanks! Chris |
From: Thomas O. <tho...@or...> - 2021-09-06 00:05:49
|
Hi folks, there is version 1.29.0 in this world now: 1.29.0 ------ - build: added --enable-runtime-tables - libmpg123: -- Float deocder runtime table computation is back as option, based on suggestion and initial patch by Ethan Halsall for a smaller download size of the wasm decoder built from libmpg23. This only trims the size of the binary on disk (network), for runtime overhead and a bit of uneasyness about concurrency during table computation, which happens implicitly on handle initialization, only guarded by an integer flag. This does _not_ revive mpg123_init(). -- The ID3v2 UTF-16 BOM check is now a straight-on loop and not a recursive function. See https://mpg123.org/download.shtml for links and mirrors. The last point seemed worthy to have as a fix in svn://scm.orgis.org/mpg123/branches/1.25-fixes and svn://scm.orgis.org/mpg123/branches/1.26-fixes for people married to an old release series. Alrighty then, Thomas |
From: Thomas O. <tho...@or...> - 2021-07-12 09:50:55
|
Hi folks, as a quick follow-up, there is mpg123 1.28.2 now, completing the fix for bug 314. Better jump directly to that if sndio is relevant for you. 1.28.2 ------ - libout123 -- Complete the fix for bug 314, reopening the device after format setup failure. 1.28.1 ------ - build: -- Explain --with-default-audio in configure help better. -- Fix build of arm_fpu (regression of configure reorg). -- Re-introduce AC_PROG_C_C99 macro for autoconf 2.69, it's only obsolete after that. -- Un-break CMake build for botched move of CheckCPUArch.c.in (bug 315). -- Avoid conflict of warning macro with MSVC pragmas in two places. Also fix UWP build with strerror check and move down inclusion of intsym.h (bug 316). -- Disable libout123 (and mpg123, out123) on UWP with cmake to get at least the decoder lib built (317). -- Hack around CMake bug(?) with QUERY_HAS_FPU to make ports/cmake also work in MinGW (bug 318). - libmpg123: -- Make mpg123.h.in usable again with MPG123_NO_CONFIGURE, for external uses (bug 313). -- Use predefined MPG123_API_VERSION in mpg123.h.in for the same. -- Better handle the ssize_t situation via typedef mpg123_ssize_t, less likely to be broken in future MSVC versions. -- Fix an integer constant definition for the most negative 32 bit numnber to avoid justified compiler complaints. - libsyn123: -- More support for MPG123_NO_CONFIGURE. -- Optionally use predefined SYN123_API_VERSION in syn123.h.in for the same. -- Add a cast to silence integer sign warning for offset in muloffdiv64() (bug 317) - libout123: -- Pulse module advertises wider format support now, not just s16. This makes mpg123 -e s24 work with it, not just out123. -- Optionally use predefined OUT123_API_VERSION in out123.h.in for non-configure use. -- Fix sndio output to properly query device format support and get default fomat on FreeBSD (bug 314). Get it from http://mpg123.org/download.shtml as usual. Alrighty then, Thomas |
From: Thomas O. <tho...@or...> - 2021-07-09 23:18:20
|
Hi folks, there is a new mpg123 relese that cleans up some build issues and improves a bit on the output side. 1.28.1 ------ - build: -- Explain --with-default-audio in configure help better. -- Fix build of arm_fpu (regression of configure reorg). -- Re-introduce AC_PROG_C_C99 macro for autoconf 2.69, it's only obsolete after that. -- Un-break CMake build for botched move of CheckCPUArch.c.in (bug 315). -- Avoid conflict of warning macro with MSVC pragmas in two places. Also fix UWP build with strerror check and move down inclusion of intsym.h (bug 316). -- Disable libout123 (and mpg123, out123) on UWP with cmake to get at least the decoder lib built (317). -- Hack around CMake bug(?) with QUERY_HAS_FPU to make ports/cmake also work in MinGW (bug 318). - libmpg123: -- Make mpg123.h.in usable again with MPG123_NO_CONFIGURE, for external uses (bug 313). -- Use predefined MPG123_API_VERSION in mpg123.h.in for the same. -- Better handle the ssize_t situation via typedef mpg123_ssize_t, less likely to be broken in future MSVC versions. -- Fix an integer constant definition for the most negative 32 bit numnber to avoid justified compiler complaints. - libsyn123: -- More support for MPG123_NO_CONFIGURE. -- Optionally use predefined SYN123_API_VERSION in syn123.h.in for the same. -- Add a cast to silence integer sign warning for offset in muloffdiv64() (bug 317) - libout123: -- Pulse module advertises wider format support now, not just s16. This makes mpg123 -e s24 work with it, not just out123. -- Optionally use predefined OUT123_API_VERSION in out123.h.in for non-configure use. -- Fix sndio output to properly query device format support and get default fomat on FreeBSD (bug 314). Get it from http://mpg123.org/download.shtml as usual. Alrighty then, Thomas |
From: Thomas O. <tho...@or...> - 2021-06-11 12:29:56
|
Hi, you might have noticed some upheaval in the world if Internet Relay Chat (if not, then this message is probably not relevant to you;-). We got #mpg123 on libera.chat now. The other channel also exists, but future is looking rather bleak. I'm still watching the whole drama fade out. Alrighty then, Thomas |
From: Thomas O. <tho...@or...> - 2021-06-09 20:20:33
|
Hi folks, following specific demand, I am releasing mpg123 1.25.15 as stealthy backport release, skipping the even more stealthy 1.25.14: (1.25.15) ------- - libmpg123: Backport bit reservoir CRC fix from 1.26 (1.25.14) ------- - libmpg123: Backport part2_3_length regression fix (bug 312). You find it on sf.net under https://sourceforge.net/projects/mpg123/files/mpg123/1.25.15/ as well as in https://mpg123.org/download/ . You can use these as sources for a software collection that wants to stay on the old trusted path of 1.25.x but doesn't want to import the patches on top. Alrighy then, Thomas |
From: Thomas O. <tho...@or...> - 2021-06-07 07:05:49
|
Am Sat, 5 Jun 2021 18:32:15 +0200 schrieb Thomas Orgis <tho...@or...>: > Among all the build noise, the regression fix in the decoder warrants > some attention. I might publish patches for that one to fix 1.25.x in > stable distros. It buggers me a lot having that in the wild. For those looking for fixes for 1.25 and 1.26, I prepared backport branches: http://scm.orgis.org/view/mpg123/branches/1.25-fixes/ and http://scm.orgis.org/view/mpg123/branches/1.26-fixes/ Those contain the code that would have been shipped as followup-releases, if I did these. The 1.25 one also contains the fix for the double crc removal so that the compliance test passes now. I hope this enters LTS distros as a regular update. Alrighty then, Thomas |
From: Thomas O. <tho...@or...> - 2021-06-07 01:19:15
|
Hi folks, there comes a fresh mpg123 distribution: 1.28.0 ------ - build: -- Fix up the build to actually build all library objects with libtool consistently, also ensuring no pointless static archives for output modules. -- Adapted things to autoconf 2.71, requiring 2.69 now (the latter tested on Debian, with their patches). -- Improved configure to be more useful --with-default-audio to define the search order, fix static build for --with-audio being a list (just choosing the first one). -- Ensure consistent use of LINK_MPG123_DLL in headers. - build (ports/cmake): -- Thanks to Evgeni Poberezhnikov for working with us on that. -- Fix up ports/cmake to really work in MSVC also for users of the lib (tested in vcpkg, bug 310). -- Hardcode ports/cmake CPU detection for x64 and ARM as CMAKE_SYSTEM_PROCESSOR is useless crap (bug 298 for real). -- Add missing io.h for _setmode() MSVC warned about (bug 311). -- Added BUILD_NO_LARGENAME define to be used by MSVC builds. Note that an MSVC build of libmpg123 does not support 64 bit file offsets. That would need more morting to the explicit API. Thanks to MS for making off_t even more messy and less useful. -- Added JACK output, fixed handling of compat_str there and in win32_wasapi. - libsyn123: Fix syn123_mix() to actually do intermediate conversion when input and output encoding are the same but non-float. This makes out123 --mix work with s16 input and output, which is not that special! - libmpg123: Fix misguided handling of part2_3_length checks in III_get_scale_factors_1() and III_get_scale_factors_2() which invalidated decoding of a mono source encoded as ms+i-stereo (bug 312). This was a regression introduced with version 1.25.7. - libout123: -- Print basic module loading errors only for last one in list. This enables use of an output module search list that anticipates module files not installed with the main package. -- Fixes for win32_wasapi build with MSVC. Among all the build noise, the regression fix in the decoder warrants some attention. I might publish patches for that one to fix 1.25.x in stable distros. It buggers me a lot having that in the wild. Alrighty then, Thomas |
From: Thomas O. <tho...@or...> - 2021-05-08 19:43:01
|
Dear mpg123 folks, a small bugfix release follows 1.27.0 (there was no 1.27.1 releaase, just a tag in the repository): 1.27.2 ------ (Trying some svn tag discipline: 1.27.1 has been tagged before, but not released. Let's increment for any change.) - Removed ports/Xcode, ports/cmake should handle that case. - Ensure debug.h is included last where it matters to avoid conflicts with debug/warning macros in system headers (bug 308). - Fix some debug/printf integer casts for 32 bit platforms (bug 309). You get it from https://mpg123.org/download.shtml as usual. Alrighty then, Thomas |
From: Thomas O. <tho...@or...> - 2021-05-07 01:11:13
|
Dear MPEG players, version 1.27.0 of mpg123 arrived with these changes: 1.27.0 ------ - libmpg123: -- Running on precomputed tables now, no need to call mpg123_init() anymore. That and mpg123_exit() are both just empty shells. You can omit them if you do not care about earlier libmpg123. You can check for MPG123_API_VERSION >= 46. -- Added API that avoids enums, mapped-to by default unless MPG123_ENUM_API is defined. - libout123: -- Added API that avoids enums, mapped-to by default unless MPG123_ENUM_API is defined. -- Added device enumeration for win32, win32_wasapi, alsa, pulse. This increments the output module ABI version to 3. -- You can choose output devices now on Windows. -- Changed default output module order to put pulse before alsa since we now ensure that pulse is not inadvertedly started by the autospawn feature. This improves the experience on desktop systems with pulse where the alsa to pulse use causes glitches. Note that on a modern Linux desktop (Ubuntu), you will not escape an instance of pulseaudio being started, with even the enumeration of the ALSA default device summoning the daemon. If you _want_ sound daemon autospawn behaviour on other platforms, you need to trigger it outside of libout123. - examples: Update for dropped mpg123_init(), more sensible copyright notes. - out123: -- safer limiting of maximum playback rate -- Added --list-devices. - mpg123: -- Fix --continue output to print track_count+1 as continue position after hitting the end of playlist. Makes scripts/conplay go to back to the beginning again (regression in 1.24.0, bug 250). -- Remote control API version 9 with @I { .. @I } wrapping of ID3 and playlist display. -- Added --list-devices. -- Fix console printout on Windows. -- Fix terminal control logic to better handle cases where stdin or stderr is not a terminal, also avoid enabling control if you specify stdin as input file. - Updated debugging/warning/error message macros to include the function name. In short: cleaned up API, output device listing and choice, less terminal screwup. Get it from http://www.mpg123.org/download.shtml and make the world a little bit better by updating your install to this version. Alrighty then, Thomas |
From: Thomas O. <tho...@or...> - 2021-04-22 09:31:39
|
Am Thu, 22 Apr 2021 04:44:34 -0400 schrieb Alan Corey <ala...@gm...>: > I can probably find a workaround, I just thought I must be overlooking > something in the documentation, or something was missing. What about my suggested script as a wrapper? You can still do volume control to it … but you'd have to remember and set the current volume for each new instance when using the script. > stdin with a -@ - at the start. Not all playing is from lists, just > clicking a song on a web page plays only that song. > > During a list play mpg123 blocks apparentlly Well … the process is alive as long as it plays the list. What do you expect? You need to put it into the background and return from the CGI to make the server/browser happy. > i was planning to start mpg123 on boot with a line like: > mpg123 -R --fifo /tmp/msock --rva-audiophile -q & So a permanent daemon that plays mp3s on request. Well, since you generate the playlists, parsing them is no issue, right? So you can build on my example script to write a little controller to this permanent mpg123 instance, feeding on its stdout and loading a new track for each encountered @P 0 line. The next track it fetches from the current playlist. Your CGI writes that someplace where the script looks for it. Well, to be honest … what you're writing … I wrote about 15 years ago and it was what pulled me into maintaining mpg123;-) http://scm.orgis.org/view/thorma/trunk/ The player part of this was first mixplayd which managed instances of mpg123 (one per track), then later my own http://thomas.orgis.org/dermixd/ . This does no playlist management by itself, neither. For that, I had http://scm.orgis.org/view/thorma/trunk/bin/mixplayer?view=markup and http://scm.orgis.org/view/thorma/trunk/bin/tdeejay?view=markup . My approach has a text-based database with a cache file per album directory. You don't need all that complexity, but I would like you to consider using something like DerMixD instead of mpg123 if you want a persistent background player. The script to manage the playlist with it could be based on http://scm.orgis.org/view/dermixd/trunk/frontend/dermixd-player?view=markup It already includes handling of normalization, via scanning the data before playback (while the other track plays), but you can also use libmpg123's zero-cpu handling of that via dermixd mpg123.rva=album Well … you can still keep it more minimal by working with an mpg123 instance, you'll just have to work with its output messages if you want persistent volume control and playlist managment. You could try to come up with a patch to mpg123/src/control_generic.c that allows playlist /path/to/list and then plays that list … I _might_ get motivated to look into it myself. Not sure right now. We'd have to agree first on how this added to the API, how it is communicated to clients that mpg123 loads a new track itself, for example. Alrighty then, Thomas |
From: Alan C. <ala...@gm...> - 2021-04-22 08:44:49
|
I can probably find a workaround, I just thought I must be overlooking something in the documentation, or something was missing. When I add new files to my collection I run a program that climbs the directory tree and (1) makes web pages, each place with multiple mp3 files or multiple subdirectories containing mp3 files gets a web page generated. Each file also get a transient serial number that will be different next time. And (2) it also creates a list which is about 2 MB and 18,000 lines long right now which is the fully qualified path for each file. That's my ultimate playlist. There's no index, the 1000th file is on line 1000. The file gets read with an fgets loop which is fast enough so far. The pages and list take seconds to generate, and only when you add more mp3 files. There'a "play all" link meant for playing a CD/album. When the page is created the link is added with the starting file number and the number of mp3 files in that directory. The cgi program sees the list flag, pulls out the starting number and count. It makes an mpg123 playiist from those by looking up the full paths and passing it on stdin with a -@ - at the start. Not all playing is from lists, just clicking a song on a web page plays only that song. During a list play mpg123 blocks apparentlly because the web browser sees a page trying to load for up to 80 minutes. If the timeout in the web server isn't set longer than that it gives a harmless gateway timeout error, which the web browser doesn't display until afterwards. But even during an album I can click links to stop (does pkill mpg13) or go to another song (pkill again first). That's another instance of my cgi program doing that I realize. It's fairly responsive even on a Raspberry Pi as a server with 13,000 tracks on an sd card. I have a crude volume adjust right now that calls amixer that I want to get rid of because of the complexity of setting it up, specifying alsa device numbers and a numid for the control number. Also add a pause for when the phone rings in the middle of a CD. I don't look at what mpg123 is saying at all, it can go to /dev/null. i was planning to start mpg123 on boot with a line like: mpg123 -R --fifo /tmp/msock --rva-audiophile -q & On 4/22/21, Thomas Orgis <tho...@or...> wrote: > Am Wed, 21 Apr 2021 20:42:18 -0400 > schrieb Alan Corey <ala...@gm...>: > >> But how do you play the whole list? I tried 1+ and 1 2 3 after >> nothing else worked, those didn't either. > > There is no command to play the whole list. The idea of the remote > control ist that you control playback. Mpg123 loading new tracks itself > conflicts with that. I added the loadlist stuff as a workaround so that > the client doesn't have to parse playlists. > > When you did loadlist, you can remember the number of tracks and then > issue loadlist with the next track number once you encounter the end of > one track. > > Ah … you're not in bidirectional communication with mpg123. I initially > extended the remote control mode for the use case of a player daemon > forking and talking to mpg123 child processes via two-way pipes. > > Your use case doesn't care about the answers from mpg123, right? One > could add a mode that runs over a whole playlist, but the API might > also need extensions to make it clear to listening clients that this > happens … and in complicates the control flow a bit. > > But for your use case of the CGI app; the point of having the remote > control is being able to issue pause/unpause, right? Or end the process. > > Well, have a look at the attached script. > > 1. sh /path/to/script.sh /path/to/playlist.m3u /path/to/socket > to start playing (run it as background process) > > 2. echo pause > /path/to/socket > to (un) pause playback > > 3. echo stop > /path/to/socket > to skip to next track > > 4. echo quit > /path/to/socket > to stop playback > > I see that the handling of playlists is really a bit unfortunate. The > printout misses a separator, something like > > @I { > @I LISTENTRY ... > @I LISTENTRY ... > @I } > > So I did that separate line just to parse the playlist. I might add the > above as change to help working with playlists, incrementing the API > version. Maybe even a command just to show the playlist count … but > thing should stay simple. I am not sure yet if mpg123 should itself > trigger loading of the next track in the list when it arrives at an end > … it increases of the options of control flow. > > There might be an argument about gapless playback needing this for > smooth transitions between tracks, not closing/pausing the output > device. > > > Alrighty then, > > Thomas > > -- ------------- Education is contagious. |
From: Thomas O. <tho...@or...> - 2021-04-22 06:24:03
|
Am Wed, 21 Apr 2021 20:42:18 -0400 schrieb Alan Corey <ala...@gm...>: > But how do you play the whole list? I tried 1+ and 1 2 3 after > nothing else worked, those didn't either. There is no command to play the whole list. The idea of the remote control ist that you control playback. Mpg123 loading new tracks itself conflicts with that. I added the loadlist stuff as a workaround so that the client doesn't have to parse playlists. When you did loadlist, you can remember the number of tracks and then issue loadlist with the next track number once you encounter the end of one track. Ah … you're not in bidirectional communication with mpg123. I initially extended the remote control mode for the use case of a player daemon forking and talking to mpg123 child processes via two-way pipes. Your use case doesn't care about the answers from mpg123, right? One could add a mode that runs over a whole playlist, but the API might also need extensions to make it clear to listening clients that this happens … and in complicates the control flow a bit. But for your use case of the CGI app; the point of having the remote control is being able to issue pause/unpause, right? Or end the process. Well, have a look at the attached script. 1. sh /path/to/script.sh /path/to/playlist.m3u /path/to/socket to start playing (run it as background process) 2. echo pause > /path/to/socket to (un) pause playback 3. echo stop > /path/to/socket to skip to next track 4. echo quit > /path/to/socket to stop playback I see that the handling of playlists is really a bit unfortunate. The printout misses a separator, something like @I { @I LISTENTRY ... @I LISTENTRY ... @I } So I did that separate line just to parse the playlist. I might add the above as change to help working with playlists, incrementing the API version. Maybe even a command just to show the playlist count … but thing should stay simple. I am not sure yet if mpg123 should itself trigger loading of the next track in the list when it arrives at an end … it increases of the options of control flow. There might be an argument about gapless playback needing this for smooth transitions between tracks, not closing/pausing the output device. Alrighty then, Thomas |
From: Alan C. <ala...@gm...> - 2021-04-22 00:42:33
|
I think I see how to switch my cgi-jukebox to use mpg123 in remote mode and gain volume control and pause. The only thing I'm confused about is how to get a playlist to work. I can do echo "loadlist 2 /tmp/list.m3u" > /tmp/msock and track 2 plays echo "loadlist -1 /tmp/list.m3u" > /tmp/msock and it lists files in the list echo "loadlist 0 /tmp/list.m3u" > /tmp/msock" and it plays the last track But how do you play the whole list? I tried 1+ and 1 2 3 after nothing else worked, those didn't either. What I do now is have my cgi build a list of all the files in a directory and feed ti to mpg123 with -@ - before it. Is that the only way? Or a series of loads, which means my program would have to wait for yours, just keep doing loads until the list is empty. I'd really rather pass the list once. I'm not sure pause and volume will interrupt a series of loads. Alan -- ------------- Education is contagious. |
From: Alan C. <ala...@gm...> - 2021-04-02 02:03:49
|
Well, it's a step toward conquering global warming to not need 400 watt computers anymore. Lithium batteries, LEDs, neodimium magnets all help. I haven't really started looking but there's probably something at https://www.parts-express.com/ to retrofit the speakers. I grabbed a few dead boom boxes from the dump. I have a 3.5 inch 640x480 touch screen that plugs onto a Zero or Pi. My jukebox program will work with Lynx but Lynx needs a real keyboard not a touchscreen. One step at a time. On Thu, Apr 1, 2021, 9:07 PM Thomas Orgis <tho...@or...> wrote: > Am Thu, 1 Apr 2021 20:53:07 -0400 > schrieb Alan Corey <ala...@gm...>: > > > Raspberry Pi ZeroW, about 3 inches long, cost $10 from Adafruit. > > Plugged it and the USB sound card into a DrOk power monitor and > > they're using 1.25 watts (0,25 amps) idling. So solar powering them > > would be no big deal. Listening to some Pink Floyd with Koss R/80 > > headphones, sounds fine. I have a touchpanel LCD, one project would > > be to retrofit a boom box. Oh, CPU usage, the peak I saw watching top > > was about 13%. > > Nice. MP3 decoding really is no big task anymore for small hardware. > Though, you could compare the generic decoder with the neon one. Would > be more than 13%, I presume. > > Regarding solar power: I got a 4 inch speaker with an extensible Tube > as cabinet vor bass response and a little chip amp (class D) embedded, > behind a supercap and a step-up converter. A 12 W panel is plenty to > work it, even with moderate sun being available. With the efficient > class D amp, the mean power draw is way below your 1.25 W. You just > need the cap for bass-heavy transients. The simple joys of life;-) > > > Alrighty then, > > Thomas > |
From: Thomas O. <tho...@or...> - 2021-04-02 01:07:53
|
Am Thu, 1 Apr 2021 20:53:07 -0400 schrieb Alan Corey <ala...@gm...>: > Raspberry Pi ZeroW, about 3 inches long, cost $10 from Adafruit. > Plugged it and the USB sound card into a DrOk power monitor and > they're using 1.25 watts (0,25 amps) idling. So solar powering them > would be no big deal. Listening to some Pink Floyd with Koss R/80 > headphones, sounds fine. I have a touchpanel LCD, one project would > be to retrofit a boom box. Oh, CPU usage, the peak I saw watching top > was about 13%. Nice. MP3 decoding really is no big task anymore for small hardware. Though, you could compare the generic decoder with the neon one. Would be more than 13%, I presume. Regarding solar power: I got a 4 inch speaker with an extensible Tube as cabinet vor bass response and a little chip amp (class D) embedded, behind a supercap and a step-up converter. A 12 W panel is plenty to work it, even with moderate sun being available. With the efficient class D amp, the mean power draw is way below your 1.25 W. You just need the cap for bass-heavy transients. The simple joys of life;-) Alrighty then, Thomas |
From: Alan C. <ala...@gm...> - 2021-04-02 00:53:22
|
OK, I got it (I'm also in the alsa-user list). I didn't have libasound2-dev so no alsa modules got built. And I also created a /etc/asound.conf (machine defaults) that says: defaults.pcm.card 1 defaults.ctl.card 1 With that and mpg123 in my path now I can just do mpg123 somefile.mp3 and it works. Raspberry Pi ZeroW, about 3 inches long, cost $10 from Adafruit. Plugged it and the USB sound card into a DrOk power monitor and they're using 1.25 watts (0,25 amps) idling. So solar powering them would be no big deal. Listening to some Pink Floyd with Koss R/80 headphones, sounds fine. I have a touchpanel LCD, one project would be to retrofit a boom box. Oh, CPU usage, the peak I saw watching top was about 13%. On 4/1/21, Alan Corey <ala...@gm...> wrote: > I had to get one of my Raspberry Pi ZeroWs in on the fun. It's an > armv6l single core, list price $10. --test-cpu shows generic generic > dither, --list-cpu shows NEON gneric generic dither. I don't have any > sound working on it yet, never tried sound on a zero before, works > fine on a Pi. I've read it works. Default is hdmi sound, I'm trying > to use a usb sound card. > > ==== Layer 1 ==== > --> 16 bit signed integer output > fl1.bit: RMS=4.364373e-06 (PASS) maxdiff=7.629395e-06 (PASS) > fl2.bit: RMS=4.353138e-06 (PASS) maxdiff=7.629395e-06 (PASS) > fl3.bit: RMS=4.348759e-06 (PASS) maxdiff=7.688999e-06 (PASS) > fl4.bit: RMS=4.403421e-06 (PASS) maxdiff=7.629395e-06 (PASS) > fl5.bit: RMS=4.323446e-06 (PASS) maxdiff=7.629395e-06 (PASS) > fl6.bit: RMS=4.389641e-06 (PASS) maxdiff=7.688999e-06 (PASS) > fl7.bit: RMS=3.826083e-06 (PASS) maxdiff=7.629395e-06 (PASS) > fl8.bit: RMS=4.362205e-06 (PASS) maxdiff=7.629395e-06 (PASS) > --> 32 bit integer output > fl1.bit: RMS=1.977733e-08 (PASS) maxdiff=1.490116e-07 (PASS) > fl2.bit: RMS=1.980311e-08 (PASS) maxdiff=1.117587e-07 (PASS) > fl3.bit: RMS=2.006633e-08 (PASS) maxdiff=1.341105e-07 (PASS) > fl4.bit: RMS=1.911986e-08 (PASS) maxdiff=1.266599e-07 (PASS) > fl5.bit: RMS=4.047884e-08 (PASS) maxdiff=1.490116e-07 (PASS) > fl6.bit: RMS=3.178246e-08 (PASS) maxdiff=1.639128e-07 (PASS) > fl7.bit: RMS=1.775744e-08 (PASS) maxdiff=1.043081e-07 (PASS) > fl8.bit: RMS=1.866297e-08 (PASS) maxdiff=8.195639e-08 (PASS) > --> 24 bit integer output > fl1.bit: RMS=4.119282e-08 (PASS) maxdiff=1.192093e-07 (PASS) > fl2.bit: RMS=4.184623e-08 (PASS) maxdiff=1.192093e-07 (PASS) > fl3.bit: RMS=4.153068e-08 (PASS) maxdiff=1.788139e-07 (PASS) > fl4.bit: RMS=4.118697e-08 (PASS) maxdiff=1.192093e-07 (PASS) > fl5.bit: RMS=4.816338e-08 (PASS) maxdiff=1.788139e-07 (PASS) > fl6.bit: RMS=4.047773e-08 (PASS) maxdiff=1.788139e-07 (PASS) > fl7.bit: RMS=4.191854e-08 (PASS) maxdiff=1.192093e-07 (PASS) > fl8.bit: RMS=4.106042e-08 (PASS) maxdiff=1.192093e-07 (PASS) > --> 32 bit floating point output > fl1.bit: RMS=1.977741e-08 (PASS) maxdiff=1.490116e-07 (PASS) > fl2.bit: RMS=1.980280e-08 (PASS) maxdiff=1.117587e-07 (PASS) > fl3.bit: RMS=2.006633e-08 (PASS) maxdiff=1.341105e-07 (PASS) > fl4.bit: RMS=1.911983e-08 (PASS) maxdiff=1.266599e-07 (PASS) > fl5.bit: RMS=4.047868e-08 (PASS) maxdiff=1.490116e-07 (PASS) > fl6.bit: RMS=3.178251e-08 (PASS) maxdiff=1.639128e-07 (PASS) > fl7.bit: RMS=1.775792e-08 (PASS) maxdiff=1.043081e-07 (PASS) > fl8.bit: RMS=1.866297e-08 (PASS) maxdiff=8.195639e-08 (PASS) > > ==== Layer 2 ==== > --> 16 bit signed integer output > fl10.bit: RMS=3.512100e-06 (PASS) maxdiff=7.629395e-06 (PASS) > fl11.bit: RMS=3.837267e-06 (PASS) maxdiff=7.629395e-06 (PASS) > fl12.bit: RMS=3.901071e-06 (PASS) maxdiff=7.629395e-06 (PASS) > fl13.bit: RMS=4.379583e-06 (PASS) maxdiff=7.629395e-06 (PASS) > fl14.bit: RMS=4.112596e-06 (PASS) maxdiff=7.688999e-06 (PASS) > fl15.bit: RMS=4.388557e-06 (PASS) maxdiff=7.688999e-06 (PASS) > fl16.bit: RMS=4.147495e-06 (PASS) maxdiff=7.688999e-06 (PASS) > --> 32 bit integer output > fl10.bit: RMS=1.788206e-08 (PASS) maxdiff=8.195639e-08 (PASS) > fl11.bit: RMS=1.798147e-08 (PASS) maxdiff=1.005828e-07 (PASS) > fl12.bit: RMS=1.791770e-08 (PASS) maxdiff=8.568168e-08 (PASS) > fl13.bit: RMS=1.770191e-08 (PASS) maxdiff=4.470348e-08 (PASS) > fl14.bit: RMS=4.111211e-08 (PASS) maxdiff=1.490116e-07 (PASS) > fl15.bit: RMS=2.477557e-08 (PASS) maxdiff=1.639128e-07 (PASS) > fl16.bit: RMS=1.970979e-08 (PASS) maxdiff=1.490116e-07 (PASS) > --> 24 bit integer output > fl10.bit: RMS=4.102704e-08 (PASS) maxdiff=1.192093e-07 (PASS) > fl11.bit: RMS=4.113184e-08 (PASS) maxdiff=1.192093e-07 (PASS) > fl12.bit: RMS=4.107583e-08 (PASS) maxdiff=1.192093e-07 (PASS) > fl13.bit: RMS=4.127499e-08 (PASS) maxdiff=5.960464e-08 (PASS) > fl14.bit: RMS=4.977907e-08 (PASS) maxdiff=1.788139e-07 (PASS) > fl15.bit: RMS=4.145519e-08 (PASS) maxdiff=1.788139e-07 (PASS) > fl16.bit: RMS=4.171672e-08 (PASS) maxdiff=1.788139e-07 (PASS) > --> 32 bit floating point output > fl10.bit: RMS=1.788201e-08 (PASS) maxdiff=8.195639e-08 (PASS) > fl11.bit: RMS=1.798150e-08 (PASS) maxdiff=1.005828e-07 (PASS) > fl12.bit: RMS=1.791763e-08 (PASS) maxdiff=8.568168e-08 (PASS) > fl13.bit: RMS=1.770194e-08 (PASS) maxdiff=4.470348e-08 (PASS) > fl14.bit: RMS=4.111203e-08 (PASS) maxdiff=1.490116e-07 (PASS) > fl15.bit: RMS=2.477554e-08 (PASS) maxdiff=1.639128e-07 (PASS) > fl16.bit: RMS=1.970946e-08 (PASS) maxdiff=1.490116e-07 (PASS) > > ==== Layer 3 ==== > --> 16 bit signed integer output > compl.bit: RMS=4.300914e-06 (PASS) maxdiff=7.688999e-06 (PASS) > --> 32 bit integer output > compl.bit: RMS=2.147540e-08 (PASS) maxdiff=1.750886e-07 (PASS) > --> 24 bit integer output > compl.bit: RMS=4.202659e-08 (PASS) maxdiff=1.788139e-07 (PASS) > --> 32 bit floating point output > compl.bit: RMS=2.147539e-08 (PASS) maxdiff=1.750886e-07 (PASS) > > ==== Layer 3 intensity stereo ==== > (no official reference, comparing to mpg123 generic 24 bit) > --> 16 bit signed integer output > drumshort08kHz.bit: RMS=4.348733e-06 (PASS) maxdiff=7.748604e-06 (PASS) > drumshort24kHz.bit: RMS=4.366053e-06 (PASS) maxdiff=7.808208e-06 (PASS) > drumshort48kHz.bit: RMS=4.375036e-06 (PASS) maxdiff=7.748604e-06 (PASS) > --> 32 bit integer output > drumshort08kHz.bit: RMS=3.685351e-08 (PASS) maxdiff=4.172325e-07 (PASS) > drumshort24kHz.bit: RMS=3.893594e-08 (PASS) maxdiff=7.450581e-07 (PASS) > drumshort48kHz.bit: RMS=3.389556e-08 (PASS) maxdiff=2.607703e-07 (PASS) > --> 24 bit integer output > drumshort08kHz.bit: RMS=2.297661e-08 (PASS) maxdiff=4.172325e-07 (PASS) > drumshort24kHz.bit: RMS=2.677607e-08 (PASS) maxdiff=7.748604e-07 (PASS) > drumshort48kHz.bit: RMS=1.460054e-08 (PASS) maxdiff=2.384186e-07 (PASS) > --> 32 bit floating point output > drumshort08kHz.bit: RMS=3.685353e-08 (PASS) maxdiff=4.172325e-07 (PASS) > drumshort24kHz.bit: RMS=3.893599e-08 (PASS) maxdiff=7.450581e-07 (PASS) > drumshort48kHz.bit: RMS=3.389551e-08 (PASS) maxdiff=2.607703e-07 (PASS) > > > On 4/1/21, Martin Guy <mar...@gm...> wrote: >> On 01/04/2021, Thomas Orgis <tho...@or...> wrote: >>> The situation on x86-64 is rather boring >>> compared to all that history of x86 optimizations. >> >> Yes, but older, slower processors are precisely where optimal speed >> optimization is most important, and the people who can't afford >> blazing 256-core 64GB towers and do their best with creaky old laptops >> dug out from their relatives' attics or found in the bins are >> precisely those who need our help most. >> >> M >> >> >> _______________________________________________ >> mpg123-users mailing list >> mpg...@li... >> https://lists.sourceforge.net/lists/listinfo/mpg123-users >> > > > -- > ------------- > Education is contagious. > -- ------------- Education is contagious. |
From: Alan C. <ala...@gm...> - 2021-04-01 22:19:53
|
I had to get one of my Raspberry Pi ZeroWs in on the fun. It's an armv6l single core, list price $10. --test-cpu shows generic generic dither, --list-cpu shows NEON gneric generic dither. I don't have any sound working on it yet, never tried sound on a zero before, works fine on a Pi. I've read it works. Default is hdmi sound, I'm trying to use a usb sound card. ==== Layer 1 ==== --> 16 bit signed integer output fl1.bit: RMS=4.364373e-06 (PASS) maxdiff=7.629395e-06 (PASS) fl2.bit: RMS=4.353138e-06 (PASS) maxdiff=7.629395e-06 (PASS) fl3.bit: RMS=4.348759e-06 (PASS) maxdiff=7.688999e-06 (PASS) fl4.bit: RMS=4.403421e-06 (PASS) maxdiff=7.629395e-06 (PASS) fl5.bit: RMS=4.323446e-06 (PASS) maxdiff=7.629395e-06 (PASS) fl6.bit: RMS=4.389641e-06 (PASS) maxdiff=7.688999e-06 (PASS) fl7.bit: RMS=3.826083e-06 (PASS) maxdiff=7.629395e-06 (PASS) fl8.bit: RMS=4.362205e-06 (PASS) maxdiff=7.629395e-06 (PASS) --> 32 bit integer output fl1.bit: RMS=1.977733e-08 (PASS) maxdiff=1.490116e-07 (PASS) fl2.bit: RMS=1.980311e-08 (PASS) maxdiff=1.117587e-07 (PASS) fl3.bit: RMS=2.006633e-08 (PASS) maxdiff=1.341105e-07 (PASS) fl4.bit: RMS=1.911986e-08 (PASS) maxdiff=1.266599e-07 (PASS) fl5.bit: RMS=4.047884e-08 (PASS) maxdiff=1.490116e-07 (PASS) fl6.bit: RMS=3.178246e-08 (PASS) maxdiff=1.639128e-07 (PASS) fl7.bit: RMS=1.775744e-08 (PASS) maxdiff=1.043081e-07 (PASS) fl8.bit: RMS=1.866297e-08 (PASS) maxdiff=8.195639e-08 (PASS) --> 24 bit integer output fl1.bit: RMS=4.119282e-08 (PASS) maxdiff=1.192093e-07 (PASS) fl2.bit: RMS=4.184623e-08 (PASS) maxdiff=1.192093e-07 (PASS) fl3.bit: RMS=4.153068e-08 (PASS) maxdiff=1.788139e-07 (PASS) fl4.bit: RMS=4.118697e-08 (PASS) maxdiff=1.192093e-07 (PASS) fl5.bit: RMS=4.816338e-08 (PASS) maxdiff=1.788139e-07 (PASS) fl6.bit: RMS=4.047773e-08 (PASS) maxdiff=1.788139e-07 (PASS) fl7.bit: RMS=4.191854e-08 (PASS) maxdiff=1.192093e-07 (PASS) fl8.bit: RMS=4.106042e-08 (PASS) maxdiff=1.192093e-07 (PASS) --> 32 bit floating point output fl1.bit: RMS=1.977741e-08 (PASS) maxdiff=1.490116e-07 (PASS) fl2.bit: RMS=1.980280e-08 (PASS) maxdiff=1.117587e-07 (PASS) fl3.bit: RMS=2.006633e-08 (PASS) maxdiff=1.341105e-07 (PASS) fl4.bit: RMS=1.911983e-08 (PASS) maxdiff=1.266599e-07 (PASS) fl5.bit: RMS=4.047868e-08 (PASS) maxdiff=1.490116e-07 (PASS) fl6.bit: RMS=3.178251e-08 (PASS) maxdiff=1.639128e-07 (PASS) fl7.bit: RMS=1.775792e-08 (PASS) maxdiff=1.043081e-07 (PASS) fl8.bit: RMS=1.866297e-08 (PASS) maxdiff=8.195639e-08 (PASS) ==== Layer 2 ==== --> 16 bit signed integer output fl10.bit: RMS=3.512100e-06 (PASS) maxdiff=7.629395e-06 (PASS) fl11.bit: RMS=3.837267e-06 (PASS) maxdiff=7.629395e-06 (PASS) fl12.bit: RMS=3.901071e-06 (PASS) maxdiff=7.629395e-06 (PASS) fl13.bit: RMS=4.379583e-06 (PASS) maxdiff=7.629395e-06 (PASS) fl14.bit: RMS=4.112596e-06 (PASS) maxdiff=7.688999e-06 (PASS) fl15.bit: RMS=4.388557e-06 (PASS) maxdiff=7.688999e-06 (PASS) fl16.bit: RMS=4.147495e-06 (PASS) maxdiff=7.688999e-06 (PASS) --> 32 bit integer output fl10.bit: RMS=1.788206e-08 (PASS) maxdiff=8.195639e-08 (PASS) fl11.bit: RMS=1.798147e-08 (PASS) maxdiff=1.005828e-07 (PASS) fl12.bit: RMS=1.791770e-08 (PASS) maxdiff=8.568168e-08 (PASS) fl13.bit: RMS=1.770191e-08 (PASS) maxdiff=4.470348e-08 (PASS) fl14.bit: RMS=4.111211e-08 (PASS) maxdiff=1.490116e-07 (PASS) fl15.bit: RMS=2.477557e-08 (PASS) maxdiff=1.639128e-07 (PASS) fl16.bit: RMS=1.970979e-08 (PASS) maxdiff=1.490116e-07 (PASS) --> 24 bit integer output fl10.bit: RMS=4.102704e-08 (PASS) maxdiff=1.192093e-07 (PASS) fl11.bit: RMS=4.113184e-08 (PASS) maxdiff=1.192093e-07 (PASS) fl12.bit: RMS=4.107583e-08 (PASS) maxdiff=1.192093e-07 (PASS) fl13.bit: RMS=4.127499e-08 (PASS) maxdiff=5.960464e-08 (PASS) fl14.bit: RMS=4.977907e-08 (PASS) maxdiff=1.788139e-07 (PASS) fl15.bit: RMS=4.145519e-08 (PASS) maxdiff=1.788139e-07 (PASS) fl16.bit: RMS=4.171672e-08 (PASS) maxdiff=1.788139e-07 (PASS) --> 32 bit floating point output fl10.bit: RMS=1.788201e-08 (PASS) maxdiff=8.195639e-08 (PASS) fl11.bit: RMS=1.798150e-08 (PASS) maxdiff=1.005828e-07 (PASS) fl12.bit: RMS=1.791763e-08 (PASS) maxdiff=8.568168e-08 (PASS) fl13.bit: RMS=1.770194e-08 (PASS) maxdiff=4.470348e-08 (PASS) fl14.bit: RMS=4.111203e-08 (PASS) maxdiff=1.490116e-07 (PASS) fl15.bit: RMS=2.477554e-08 (PASS) maxdiff=1.639128e-07 (PASS) fl16.bit: RMS=1.970946e-08 (PASS) maxdiff=1.490116e-07 (PASS) ==== Layer 3 ==== --> 16 bit signed integer output compl.bit: RMS=4.300914e-06 (PASS) maxdiff=7.688999e-06 (PASS) --> 32 bit integer output compl.bit: RMS=2.147540e-08 (PASS) maxdiff=1.750886e-07 (PASS) --> 24 bit integer output compl.bit: RMS=4.202659e-08 (PASS) maxdiff=1.788139e-07 (PASS) --> 32 bit floating point output compl.bit: RMS=2.147539e-08 (PASS) maxdiff=1.750886e-07 (PASS) ==== Layer 3 intensity stereo ==== (no official reference, comparing to mpg123 generic 24 bit) --> 16 bit signed integer output drumshort08kHz.bit: RMS=4.348733e-06 (PASS) maxdiff=7.748604e-06 (PASS) drumshort24kHz.bit: RMS=4.366053e-06 (PASS) maxdiff=7.808208e-06 (PASS) drumshort48kHz.bit: RMS=4.375036e-06 (PASS) maxdiff=7.748604e-06 (PASS) --> 32 bit integer output drumshort08kHz.bit: RMS=3.685351e-08 (PASS) maxdiff=4.172325e-07 (PASS) drumshort24kHz.bit: RMS=3.893594e-08 (PASS) maxdiff=7.450581e-07 (PASS) drumshort48kHz.bit: RMS=3.389556e-08 (PASS) maxdiff=2.607703e-07 (PASS) --> 24 bit integer output drumshort08kHz.bit: RMS=2.297661e-08 (PASS) maxdiff=4.172325e-07 (PASS) drumshort24kHz.bit: RMS=2.677607e-08 (PASS) maxdiff=7.748604e-07 (PASS) drumshort48kHz.bit: RMS=1.460054e-08 (PASS) maxdiff=2.384186e-07 (PASS) --> 32 bit floating point output drumshort08kHz.bit: RMS=3.685353e-08 (PASS) maxdiff=4.172325e-07 (PASS) drumshort24kHz.bit: RMS=3.893599e-08 (PASS) maxdiff=7.450581e-07 (PASS) drumshort48kHz.bit: RMS=3.389551e-08 (PASS) maxdiff=2.607703e-07 (PASS) On 4/1/21, Martin Guy <mar...@gm...> wrote: > On 01/04/2021, Thomas Orgis <tho...@or...> wrote: >> The situation on x86-64 is rather boring >> compared to all that history of x86 optimizations. > > Yes, but older, slower processors are precisely where optimal speed > optimization is most important, and the people who can't afford > blazing 256-core 64GB towers and do their best with creaky old laptops > dug out from their relatives' attics or found in the bins are > precisely those who need our help most. > > M > > > _______________________________________________ > mpg123-users mailing list > mpg...@li... > https://lists.sourceforge.net/lists/listinfo/mpg123-users > -- ------------- Education is contagious. |
From: Martin G. <mar...@gm...> - 2021-04-01 19:35:37
|
On 01/04/2021, Thomas Orgis <tho...@or...> wrote: > The situation on x86-64 is rather boring > compared to all that history of x86 optimizations. Yes, but older, slower processors are precisely where optimal speed optimization is most important, and the people who can't afford blazing 256-core 64GB towers and do their best with creaky old laptops dug out from their relatives' attics or found in the bins are precisely those who need our help most. M |
From: Thomas O. <tho...@or...> - 2021-04-01 19:13:44
|
Am Thu, 1 Apr 2021 20:59:28 +0200 schrieb Martin Guy <mar...@gm...>: > Compared with Debian stable's /usr/bin/mpg123 (1.25.10) there are many > fewer FAILs Well, those are still OK, as we're in the range of LIMITED accuracty, where the maxdiff value doesn't count (acurrate rounding gives full PASS). Looks fine so far … nice. The situation on x86-64 is rather boring compared to all that history of x86 optimizations. Alrighty then, Thomas |
From: Martin G. <mar...@gm...> - 2021-04-01 19:02:46
|
On 01/04/2021, Martin Guy <mar...@gm...> wrote: > from the third or fifth decimal place of the RMS values Oops "fourth or sixth" M |
From: Martin G. <mar...@gm...> - 2021-04-01 18:59:42
|
> mpg123 --test-cpu Thanks for that. I've compared compliance.pl's output for SSE SSE_vintage 3DNowExt 3DNowExt_vintage 3DNow 3DNow_vintage MMX i586 i586_dither i386 generic generic_dither against the latest release 1.26.5 and there are the same number of failures in the same tests (so I guess that counts as a success!); the only differences in the test results are for 3DNowExt, 3DNowExt_vintage and MMX, from the third or fifth decimal place of the RMS values, reported below for what it's worth. Compared with Debian stable's /usr/bin/mpg123 (1.25.10) there are many fewer FAILs Hope this helps M 3DNow < fl6.bit: RMS=4.104890e-05 (LIMITED) maxdiff=1.187921e-04 (FAIL) --- > fl6.bit: RMS=4.104650e-05 (LIMITED) maxdiff=1.187921e-04 (FAIL) < compl.bit: RMS=2.652098e-05 (LIMITED) maxdiff=8.583069e-05 (FAIL) < drumshort08kHz.bit: RMS=2.589487e-05 (LIMITED) maxdiff=9.143353e-05 (FAIL) < drumshort24kHz.bit: RMS=2.613411e-05 (LIMITED) maxdiff=9.620190e-05 (FAIL) < drumshort48kHz.bit: RMS=2.646339e-05 (LIMITED) maxdiff=1.008511e-04 (FAIL) --- > compl.bit: RMS=2.652021e-05 (LIMITED) maxdiff=8.583069e-05 (FAIL) > drumshort08kHz.bit: RMS=2.589470e-05 (LIMITED) maxdiff=9.143353e-05 (FAIL) > drumshort24kHz.bit: RMS=2.613387e-05 (LIMITED) maxdiff=9.620190e-05 (FAIL) > drumshort48kHz.bit: RMS=2.646390e-05 (LIMITED) maxdiff=1.008511e-04 (FAIL) 3DNow_vintage < fl6.bit: RMS=4.104890e-05 (LIMITED) maxdiff=1.187921e-04 (FAIL) --- > fl6.bit: RMS=4.104650e-05 (LIMITED) maxdiff=1.187921e-04 (FAIL) < compl.bit: RMS=2.652098e-05 (LIMITED) maxdiff=8.583069e-05 (FAIL) < drumshort08kHz.bit: RMS=2.589487e-05 (LIMITED) maxdiff=9.143353e-05 (FAIL) < drumshort24kHz.bit: RMS=2.613411e-05 (LIMITED) maxdiff=9.620190e-05 (FAIL) < drumshort48kHz.bit: RMS=2.646339e-05 (LIMITED) maxdiff=1.008511e-04 (FAIL) --- > compl.bit: RMS=2.652021e-05 (LIMITED) maxdiff=8.583069e-05 (FAIL) > drumshort08kHz.bit: RMS=2.589470e-05 (LIMITED) maxdiff=9.143353e-05 (FAIL) > drumshort24kHz.bit: RMS=2.613387e-05 (LIMITED) maxdiff=9.620190e-05 (FAIL) > drumshort48kHz.bit: RMS=2.646390e-05 (LIMITED) maxdiff=1.008511e-04 (FAIL) martin@alfio:~/mpg123-20210331022201/test$ diff *3DNowExt_* 6c6 < fl6.bit: RMS=4.104890e-05 (LIMITED) maxdiff=1.187921e-04 (FAIL) --- > fl6.bit: RMS=4.104650e-05 (LIMITED) maxdiff=1.187921e-04 (FAIL) 19c19 < drumshort48kHz.bit: RMS=2.646411e-05 (LIMITED) maxdiff=1.008511e-04 (FAIL) --- > drumshort48kHz.bit: RMS=2.646417e-05 (LIMITED) maxdiff=1.008511e-04 (FAIL) MMX < fl5.bit: RMS=2.420559e-05 (LIMITED) maxdiff=7.015467e-05 (FAIL) < fl6.bit: RMS=3.548829e-05 (LIMITED) maxdiff=1.149774e-04 (FAIL) --- > fl5.bit: RMS=2.420454e-05 (LIMITED) maxdiff=7.015467e-05 (FAIL) > fl6.bit: RMS=3.548601e-05 (LIMITED) maxdiff=1.149774e-04 (FAIL) < drumshort08kHz.bit: RMS=1.538304e-05 (LIMITED) maxdiff=6.127357e-05 (FAIL) < drumshort24kHz.bit: RMS=1.550904e-05 (LIMITED) maxdiff=6.973743e-05 (FAIL) < drumshort48kHz.bit: RMS=1.595723e-05 (LIMITED) maxdiff=9.280443e-05 (FAIL) --- > drumshort08kHz.bit: RMS=1.538374e-05 (LIMITED) maxdiff=6.127357e-05 (FAIL) > drumshort24kHz.bit: RMS=1.550949e-05 (LIMITED) maxdiff=6.973743e-05 (FAIL) > drumshort48kHz.bit: RMS=1.595720e-05 (LIMITED) maxdiff=9.280443e-05 (FAIL) |
From: Thomas O. <tho...@or...> - 2021-04-01 13:00:23
|
Am Thu, 1 Apr 2021 07:07:04 -0400 schrieb Alan Corey <ala...@gm...>: > A socket! Perfect, I think. There's not one mention of the word > socket in the mpg123 man page. Search by typing /socket while you > have ii open. OK, the entry uses some other names for the thing: --fifo path Create a fifo / named pipe on the given path and use that for reading commands instead of standard input. I was loose with my terminology. It's not a UNIX domain socket, but a FIFO/named pipe. They look similar, but are not the same. I use a UNIX domain socket in my mixing daemon … > I did > ./mpg123 -R --fifo /dev/shm/m123.sock > echo pause > /dev/shm/m123.sock > but > netstat | grep m123 > shows nothing. So it's only a local socket? A named pipe, no network socket. > And if I ctrl-c where > the output is happening then ps ax | grep mpg123 shows nothing The mpg123 process keeps running in the terminal where you started it. You need to explicitly put it into the background. > is fine. I have a stop link now that does a pkill mpg123. i wasn't > sure that I wanted it running fulltime. You can always kill, but you can also echo quit to the fifo. > The only thing I knew about mpg123's remote mode was that it's enabled > while playing, you can do a p in that window to pause. That is not the remote mode, but yet another input path: _terminal_ control. Alrighty then, Thomas |
From: Alan C. <ala...@gm...> - 2021-04-01 11:07:15
|
A socket! Perfect, I think. There's not one mention of the word socket in the mpg123 man page. Search by typing /socket while you have ii open. I did ./mpg123 -R --fifo /dev/shm/m123.sock echo pause > /dev/shm/m123.sock but netstat | grep m123 shows nothing. So it's only a local socket? And if I ctrl-c where the output is happening then ps ax | grep mpg123 shows nothing, which is fine. I have a stop link now that does a pkill mpg123. i wasn't sure that I wanted it running fulltime. The only thing I knew about mpg123's remote mode was that it's enabled while playing, you can do a p in that window to pause. Also your volume option is much better that what I could accomplish with amixer because it's only mpg123's volume. You don't have to explain a zillion sound cards and numids. Or install alsa-utils to get amixer at all. On 4/1/21, Thomas Orgis <tho...@or...> wrote: > Am Wed, 31 Mar 2021 21:56:18 -0400 > schrieb Alan Corey <ala...@gm...>: > >> some remote capabilities including pause/unpause and I'm trying to >> access that. > > Ah, some basic misunderstanding. The remote control doesn't work via > command line, but standard input or a UNIX socket (FIFO). My > recommendation is to start mpg123 in the background using > > mpg123 -R --fifo /dev/shm/mpg123.socket > > Then, you can issue commands like > > echo help > /dev/shm/mpg123.socket > > and obviously > > echo load /path/to/file > /dev/shm/mpg123.socket > > and as well > > echo pause > /dev/shm/mpg123.socket > . > > You can capture the output of the mpg123 process to display progress > information somehow (but take care not to keep an ever-growing file of > that). > > Access to the socket is controlled using normal UNIX permissions. > > > Alrighty then, > > Thomas > > > PS: Some history: I only became mpg123 maintainer because I was doing > something similar around 2004 or so, a web frontend to our local music > archive. It used a backgrounded script that does playlist management > and worked on an instance of mixplayd, which started mpg123 processes. > I replaced mixplayd eventually with my own dermixd, which relies on the > remote control interface of mpg123, which I extended for better use … > and these extensions lead to me taking over development of mpg123. > If you don't need mixing of tracks, a single instance of mpg123 with > the remote interface does the trick. And I still need to get around > reworking dermixd to make more use of the building blocks I provide now > with mpg123 (libsyn123, namely). > > > _______________________________________________ > mpg123-users mailing list > mpg...@li... > https://lists.sourceforge.net/lists/listinfo/mpg123-users > -- ------------- Education is contagious. |
From: Alan C. <ala...@gm...> - 2021-04-01 09:20:53
|
Raspberry Pi 32 bit looks OK. 32 bit ARM -DOPT_NEON -DREAL_IS_FLOAT ==== Layer 1 ==== --> 16 bit signed integer output fl1.bit: RMS=4.364373e-06 (PASS) maxdiff=7.629395e-06 (PASS) fl2.bit: RMS=4.353138e-06 (PASS) maxdiff=7.629395e-06 (PASS) fl3.bit: RMS=4.348759e-06 (PASS) maxdiff=7.688999e-06 (PASS) fl4.bit: RMS=4.403421e-06 (PASS) maxdiff=7.629395e-06 (PASS) fl5.bit: RMS=4.323457e-06 (PASS) maxdiff=7.688999e-06 (PASS) fl6.bit: RMS=4.389618e-06 (PASS) maxdiff=7.688999e-06 (PASS) fl7.bit: RMS=3.826083e-06 (PASS) maxdiff=7.629395e-06 (PASS) fl8.bit: RMS=4.362205e-06 (PASS) maxdiff=7.629395e-06 (PASS) --> 32 bit integer output fl1.bit: RMS=1.967878e-08 (PASS) maxdiff=1.518056e-07 (PASS) fl2.bit: RMS=1.974415e-08 (PASS) maxdiff=1.117587e-07 (PASS) fl3.bit: RMS=2.002597e-08 (PASS) maxdiff=1.341105e-07 (PASS) fl4.bit: RMS=1.902075e-08 (PASS) maxdiff=1.303852e-07 (PASS) fl5.bit: RMS=3.696791e-08 (PASS) maxdiff=1.192093e-07 (PASS) fl6.bit: RMS=3.083500e-08 (PASS) maxdiff=1.639128e-07 (PASS) fl7.bit: RMS=1.767290e-08 (PASS) maxdiff=8.381903e-08 (PASS) fl8.bit: RMS=1.855577e-08 (PASS) maxdiff=8.661300e-08 (PASS) --> 24 bit integer output fl1.bit: RMS=4.093702e-08 (PASS) maxdiff=1.192093e-07 (PASS) fl2.bit: RMS=4.151443e-08 (PASS) maxdiff=1.192093e-07 (PASS) fl3.bit: RMS=4.120920e-08 (PASS) maxdiff=1.788139e-07 (PASS) fl4.bit: RMS=4.100641e-08 (PASS) maxdiff=1.192093e-07 (PASS) fl5.bit: RMS=4.520833e-08 (PASS) maxdiff=1.192093e-07 (PASS) fl6.bit: RMS=3.936361e-08 (PASS) maxdiff=1.788139e-07 (PASS) fl7.bit: RMS=4.187449e-08 (PASS) maxdiff=1.192093e-07 (PASS) fl8.bit: RMS=4.095820e-08 (PASS) maxdiff=1.192093e-07 (PASS) --> 32 bit floating point output fl1.bit: RMS=1.967905e-08 (PASS) maxdiff=1.518056e-07 (PASS) fl2.bit: RMS=1.974427e-08 (PASS) maxdiff=1.117587e-07 (PASS) fl3.bit: RMS=2.002600e-08 (PASS) maxdiff=1.341105e-07 (PASS) fl4.bit: RMS=1.902079e-08 (PASS) maxdiff=1.303852e-07 (PASS) fl5.bit: RMS=3.696797e-08 (PASS) maxdiff=1.192093e-07 (PASS) fl6.bit: RMS=3.083505e-08 (PASS) maxdiff=1.639128e-07 (PASS) fl7.bit: RMS=1.767224e-08 (PASS) maxdiff=8.381903e-08 (PASS) fl8.bit: RMS=1.855574e-08 (PASS) maxdiff=8.661300e-08 (PASS) ==== Layer 2 ==== --> 16 bit signed integer output fl10.bit: RMS=3.512100e-06 (PASS) maxdiff=7.629395e-06 (PASS) fl11.bit: RMS=3.837267e-06 (PASS) maxdiff=7.629395e-06 (PASS) fl12.bit: RMS=3.901071e-06 (PASS) maxdiff=7.629395e-06 (PASS) fl13.bit: RMS=4.379583e-06 (PASS) maxdiff=7.629395e-06 (PASS) fl14.bit: RMS=4.112578e-06 (PASS) maxdiff=7.688999e-06 (PASS) fl15.bit: RMS=4.388579e-06 (PASS) maxdiff=7.688999e-06 (PASS) fl16.bit: RMS=4.147492e-06 (PASS) maxdiff=7.688999e-06 (PASS) --> 32 bit integer output fl10.bit: RMS=1.779048e-08 (PASS) maxdiff=8.381903e-08 (PASS) fl11.bit: RMS=1.789493e-08 (PASS) maxdiff=9.313226e-08 (PASS) fl12.bit: RMS=1.782033e-08 (PASS) maxdiff=8.195639e-08 (PASS) fl13.bit: RMS=1.762086e-08 (PASS) maxdiff=4.470348e-08 (PASS) fl14.bit: RMS=3.570342e-08 (PASS) maxdiff=1.192093e-07 (PASS) fl15.bit: RMS=2.415848e-08 (PASS) maxdiff=1.937151e-07 (PASS) fl16.bit: RMS=1.927612e-08 (PASS) maxdiff=1.490116e-07 (PASS) --> 24 bit integer output fl10.bit: RMS=4.083478e-08 (PASS) maxdiff=1.192093e-07 (PASS) fl11.bit: RMS=4.091156e-08 (PASS) maxdiff=1.192093e-07 (PASS) fl12.bit: RMS=4.090269e-08 (PASS) maxdiff=1.192093e-07 (PASS) fl13.bit: RMS=4.105970e-08 (PASS) maxdiff=5.960464e-08 (PASS) fl14.bit: RMS=4.397316e-08 (PASS) maxdiff=1.192093e-07 (PASS) fl15.bit: RMS=4.074233e-08 (PASS) maxdiff=2.384186e-07 (PASS) fl16.bit: RMS=4.146112e-08 (PASS) maxdiff=1.788139e-07 (PASS) --> 32 bit floating point output fl10.bit: RMS=1.779060e-08 (PASS) maxdiff=8.381903e-08 (PASS) fl11.bit: RMS=1.789507e-08 (PASS) maxdiff=9.313226e-08 (PASS) fl12.bit: RMS=1.782040e-08 (PASS) maxdiff=8.195639e-08 (PASS) fl13.bit: RMS=1.762101e-08 (PASS) maxdiff=4.470348e-08 (PASS) fl14.bit: RMS=3.570346e-08 (PASS) maxdiff=1.192093e-07 (PASS) fl15.bit: RMS=2.415856e-08 (PASS) maxdiff=1.937151e-07 (PASS) fl16.bit: RMS=1.927528e-08 (PASS) maxdiff=1.490116e-07 (PASS) ==== Layer 3 ==== --> 16 bit signed integer output compl.bit: RMS=4.300914e-06 (PASS) maxdiff=7.748604e-06 (PASS) --> 32 bit integer output compl.bit: RMS=2.120276e-08 (PASS) maxdiff=1.862645e-07 (PASS) --> 24 bit integer output compl.bit: RMS=4.174178e-08 (PASS) maxdiff=1.788139e-07 (PASS) --> 32 bit floating point output compl.bit: RMS=2.120276e-08 (PASS) maxdiff=1.862645e-07 (PASS) ==== Layer 3 intensity stereo ==== (no official reference, comparing to mpg123 generic 24 bit) --> 16 bit signed integer output drumshort08kHz.bit: RMS=4.348722e-06 (PASS) maxdiff=7.688999e-06 (PASS) drumshort24kHz.bit: RMS=4.366036e-06 (PASS) maxdiff=7.987022e-06 (PASS) drumshort48kHz.bit: RMS=4.375120e-06 (PASS) maxdiff=8.285046e-06 (PASS) --> 32 bit integer output drumshort08kHz.bit: RMS=3.449667e-08 (PASS) maxdiff=2.682209e-07 (PASS) drumshort24kHz.bit: RMS=3.627009e-08 (PASS) maxdiff=4.321337e-07 (PASS) drumshort48kHz.bit: RMS=4.132568e-08 (PASS) maxdiff=1.057051e-06 (PASS) --> 24 bit integer output drumshort08kHz.bit: RMS=1.749200e-08 (PASS) maxdiff=2.980232e-07 (PASS) drumshort24kHz.bit: RMS=2.146217e-08 (PASS) maxdiff=4.172325e-07 (PASS) drumshort48kHz.bit: RMS=3.004938e-08 (PASS) maxdiff=1.072884e-06 (PASS) --> 32 bit floating point output drumshort08kHz.bit: RMS=3.449654e-08 (PASS) maxdiff=2.682209e-07 (PASS) drumshort24kHz.bit: RMS=3.626974e-08 (PASS) maxdiff=4.321337e-07 (PASS) drumshort48kHz.bit: RMS=4.132554e-08 (PASS) maxdiff=1.057051e-06 (PASS) On 4/1/21, Thomas Orgis <tho...@or...> wrote: > > > Am 31. März 2021 22:10:32 MESZ schrieb Alan Corey <ala...@gm...>: >>OK, it runs fine here. Debian Bullseye on a Pinebook Pro laptop. >>Want a test on a Raspberry Pi (3B)? ZeroW? > > Any variation is good (mainly, 32 bit and 64 bit, nofpu, neon ... see > --with-cpu for configure). > > > Alrighty then, > > Thomas > -- ------------- Education is contagious. |