A “Stream-What-You-Hear” implementation written in Rust, MIT licensed. swyh-rs implements the idea behind the original SWYH but written in Rust. It allows you to stream the music you’re currently playing on your PC (Windows or Linux) to an UPNP/DLNA/OpenHome compatible music player (a “Renderer”).
Soundnode App is an Open-Source project to support Soundcloud for desktop Mac, Windows, and Linux. It’s built with Electron, Node.js, Angular.js, and uses the Soundcloud API.
GVolWheel is a Linux application which lets you control the volume easily through a tray icon you can scroll on. Easily integrate with minimal desktops (Openbox,IceWM,XFCE etc).
eyeD3 is a Python tool for working with audio files, specifically MP3 files containing ID3 metadata (i.e. song info).
It provides a command-line tool (eyeD3) and a Python library (import eyed3) that can be used to write your own applications or plugins that are callable from the command-line tool.
Before ID3v2 came around, Lyrics3 and Lyrics3v2 had their uses (extending the 30-char limit, placing synced lyrics), but nowadays they are a nuisance for most of us. Plus, we have the lyrics frames USLT and SYLT in ID3v2.
Lyrics3 tags come between the audio data and an ID3v1/ID3v1.1 tag at the end of the file (sometimes without the following ID3v1 tag, even if that is mandatory according to Lyrics3 specs). Current ffmpeg and some players and tools still have bugs and try to interpret Lyrics3 tags as audio data, resulting in obscure errors. Unfortunately, there are almost no tools out there to remove Lyrics3 tags—most programs ignore them, but write them back if changing tags. When removing ID3v1 tags from a file, this can result in the illegal situation mentioned above (having a Lyrics3 tag without a following ID3v1 tag)..
This code has been tested with thousands of files but I can give no guarantees. If you destroy your whole music collection, it’s not my fault. Please have a backup!
Unlike a lot of people, I strangely like to have my individual non-mixed tracks located in one flat folder and any mixes (such as Ministry Of Sound mix albums, etc…) go into another folder sorted by Albums in separate folders. I also embed all of my MP3s with the album art from the album it is from so they are fully portable across a multi-tude of systems.
Therefore, I want my original system kept as is for me, but software like Windows Media Center annoyingly requires you to have it structured in the ‘Album Artist -> Album’ directory structure with the album art stored as ‘Folder.jpg’.
I will not be ranting about how rubbish that required structure is on a technical level; I have got over that now :). But instead, I wrote a PERL script that runs on my Linux NAS that does the following:
Only runs on Linux – if anyone wants to code link support in for Windows / NTFS partitions, please go ahead and mail back the changes.
Scans a directory (–mp3dir) (recursion is optional using –recursive) for MP3s / M3U playlists and creates softlinks pointing back to the original files under the ‘Album Artist\Album’ folder structure within –linksdir.
The embedded album art is then checked across the album being processed to ensure it is the same – if not, a Warning is output leaving you to fix it. The embedded album art is created as ‘Folder.jpg’ for Windows Media Center.
If you want it to delete soft links for tracks / directories that no longer exist in –linksdir (i.e. if you have moved / renamed the original file), you can use –delnonexists.
On the off chance you want the –linksdir within the directory structure of –mp3dir, you can use –excludemp3dir to ensure the –linksdir isn’t double scanned.
For the first run, I strongly recommend not using the –createlinks switch so you can view any errors you may get.
You need to have the library MP3::Tag installed for this to run – you can get this from CPAN.
tone is a cross platform audio tagger and metadata editor to dump and modify metadata for a wide variety of formats, including mp3, m4b, flac and more. It has no dependencies and can be downloaded as single binary for Windows, macOS, Linux and other common platforms.
The code is written in pure C# and utilizes the awesome atldotnet library to provide full support for a wide variety of audio and metadata formats.
Features:
The main purpose of tone is to tag m4b audio books for myself. It is planned as a successor to [m4b-tool].
dump metadata of audio files
different metadata formats (e.g. chptfmtnative, ffmetadata, etc.)
file information (bitrate, channels, duration, etc.)
support for filterable json output (similar to jq)
extensive list of supported tags (default fields like album or *artist as well as custom fields, covers, chapters, etc.)
tag audio files with different kinds of metadata
different file formats (e.g. mp3, m4b, and flac)
extensive list of supported tags (default fields like album or *artist as well as custom fields, covers, chapters, etc.)
filename to tags via --path-pattern (see below)
custom javascript taggers via --script and --script-tagger-parameter
Tksolfege is an ear training program for learning to recognize chords, intervals, perform rhythm dictation, solfege dictation and singing solfege sequences. The program requires Tcl/Tk 8.4, however the Windows executable has Tcl/Tk builtin.
Features:
The program contains ear training exercises for the identification of chords, musical intervals, key signatures, musical scales, and cadences.
PipeWire is a project that aims to greatly improve handling of audio and video under Linux. It provides a low-latency, graph-based processing engine on top of audio and video devices that can be used to support the use cases currently handled by both PulseAudio and JACK. PipeWire was designed with a powerful security model that makes interacting with audio and video devices from containerized applications easy, with support for Flatpak applications being the primary goal. Alongside Wayland and Flatpak, we expect PipeWire to provide a core building block for the future of Linux application development.
Capture and playback of audio and video with minimal latency.
Real-time multimedia processing on audio and video.
Multiprocess architecture to let applications share multimedia content.
Seamless support for PulseAudio, JACK, ALSA, and GStreamer applications.
Sandboxed applications support. See Flatpak for more info.