Oct. 31st, 2016

Here's a list of music/audio software I like or have found of interest. I've built all of them from source without too many complications at one point or another. I'm also working on patching apcstudio which is a lightweight FLTK based audio/wave file editor. I have it building with the latest version of FLTK and am hoping to add some new capabilities.

URLs are accurate as of when this was posted. However, they can change over time. You can use a search engine or archive.org wayback tool to find pages that have been moved or backups of older versions of pages.

Audacity
Multi-track audio editor and recorder. It can be used to record real instruments and create sound samples.
http://www.audacityteam.org/

MilkyTracker
Create and listen to mod and xm files. Sound quality for playing mod files is better than many other mod file players.
http://milkytracker.org/

TiMidity++
Midi player. Can convert midi to wave files. Some versions show piano keyboard(s) with notes as they play. Can show lyrics of Karaoke midi files.
http://timidity.sourceforge.net/

abcmidi
Convert ABC notation (which can be created in any text editor) to midi and back again.
http://abc.sourceforge.net/abcMIDI/

abcm2ps
Convert ABC notation to Postscript sheet music for printing. One can even add guitar tablature using special fonts.
http://moinejf.free.fr/

sox - SOund eXchange
Swiss army knife of sound processing programs. Audio conversion utilities.
http://sox.sourceforge.net/

gramofile
Records/plays audio and has audio filtering to remove noise.
http://www.opensourcepartners.nl/~costar/gramofile/

FLTK Midi Keyboard
On screen Midi Keyboard using FLTK GUI library and rtmidi MIDI library.
https://github.com/ncassetta/Fl_MIDIKeyboard

SDL Widgets examples
Various audio programs including BigBand for music composition, SDL Widgets examples to make and edit waveforms and a synthesizer for Android devices.
http://members.chello.nl/w.boeke/

PaulStretch
Paul's Extreme Sound Stretch. Stretches audio files. FLTK GUI.
http://hypermammut.sourceforge.net/paulstretch/

SoundTouch
Audio processing library for changing the tempo, pitch and playback rates.
http://www.surina.net/soundtouch/

declick
Tool to remove digital clicks in recordings.
http://home.snafu.de/wahlm/dl8hbs/declick.html

shntool
Tool to edit wave file properties.
http://shnutils.freeshell.org/shntool/

GUS patch tools
Gus patch utilities based on timidity-tools.
http://www.squeep.com/~steve/guspatch-tools-0.1.tar.bz2

GT
Midi utilities with GUS support
http://pkgs.fedoraproject.org/repo/pkgs/gt/gt-0.4-clean.tar.gz/d595e464e6403f4bd8c3cfc7c42b2aec/

sfubar
Command line Soundfont 2 file editor.
https://github.com/freepats/old-tools/tree/master/sfubar-9
Here are some links related to music documentation.

URLs are accurate as of when this was posted. However, they can change over time. You can use a search engine or archive.org wayback tool to find pages that have been moved or backups of older versions of pages.

Music Theory for Musicians and Normal People
Creative Commons licensed music theory PDF.
http://tobyrush.com/theorypages/index.html

Programming and Using Linux Sound - in depth
Nice introduction to music software on Linux.
Has some good coding examples using midi code such as TiMidity++ and other midi libraries.
https://jan.newmarch.name/LinuxSound/

Recipes for Music on Your PC
Tutorial on creating music using ABC notation and TiMidity++
http://distasis.com/recipes/music.htm

Wotsits.org sound and music file formats
File format information backed up at archive.org from the no longer available wotsits.org site
https://web.archive.org/web/20150323133016/http://www.wotsit.org/list.asp?fc=12
This is a list of useful soundfonts and sound samples.

URLs are accurate as of when this was posted. However, they can change over time. You can use a search engine or archive.org wayback tool to find pages that have been moved or backups of older versions of pages.

Ethan's Original Soundfonts
Royalty free soundfonts created by Ethan Winer.
http://ethanwiner.com/ewsf2.html

FreePats project
Original web site with sound samples
https://web.archive.org/web/20160310040553/http://freepats.zenvoid.org/

Freesound
Collaborative database of Creative Commons licensed sounds
https://www.freesound.org/

MuseScore Soundfont links
SoundFonts recommended by the MuseScore project
https://musescore.org/en/handbook/soundfont

OLPC Free sound samples
Links to free sound sample resources.
http://wiki.laptop.org/go/Free_sound_samples

Philharmonia Orchestra Sound Samples
Creative Commons licensed sound samples
http://www.philharmonia.co.uk/explore/make_music/

PlopGrizzly
A collection of public domain soundfonts and instrument/sound effect recordings.
https://github.com/PlopGrizzly/PlopGrizzlySound

Titanic Soundfont
Public domain, high quality MIDI soundfont by Luke Sena.
https://aur.archlinux.org/packages/soundfont-titanic/

University of Iowa Music Instrument Samples
Freely available for use without restriction.
http://theremin.music.uiowa.edu/MIS.html
GUI libraries

I've written articles on cross platform screen libraries including one for the C/C++ Users Journal. I've also done a lot of searching and evaluation of cross-platform GUI libraries. You can take a look at my comparison article on screen libraries at http://www.distasis.com/cpp/scrlib.htm

The following list does not cover every GUI library out there, but it gives a good sample of what's available. Most are C++ libraries but there are a few C libraries for those wanting to work only with C.

My personal preferences at this point are SDL (1 and 2), pdcurses and FLTK because they're lightweight and work on a large variety of systems including mobile devices.

URLs are accurate as of when this was posted. However, they can change over time. You can use a search engine or archive.org wayback tool to find pages that have been moved or backups of older versions of pages.

FLTK - Fast Light ToolKit (C++)
http://www.fltk.org/index.php

Fox Toolkit (C++)
http://www.fox-toolkit.org/

wxWidgets (C++)
http://www.wxwidgets.org/

SDL - SDL 1 and SDL 2
Simple DirectMedia Layer - C cross-platform multimedia library
https://www.libsdl.org/

SDL-widgets
C++ library
http://members.chello.nl/w.boeke/SDL-widgets/

SMFL - simple and fast multimedia library
http://www.sfml-dev.org/

pdcurses
C library
Works with Windows console, X11, SDL 1 and 2
http://pdcurses.sourceforge.net/

pdcurses win32a
C library
A PDCurses fork for Win32 (not console mode).
http://www.projectpluto.com/win32a.htm

Qt
Expansive C++ GUI toolkit - source includes many libraries including a browser example using Webkit.
https://www.qt.io/

NCurses
C console library. Works on POSIX systems and Windows.
http://invisible-island.net/ncurses/

Windows++
I learned a great deal about Win32 C++ programming from the book that created this framework:
https://web.archive.org/web/20070404043707/http://www.dilascia.com/wpp.htm

Owlnext
Borland's Object Windows C++ Library for the modern age
https://sourceforge.net/projects/owlnext/

Ultimate
C++ cross-platform rapid application development framework
http://www.ultimatepp.org/index.html

Poco
C++ library
https://pocoproject.org/

Nana
C++11 GUI library
https://github.com/cnjinhao/nana

GraphApp
Toolkit for platform-independent graphical user interface programming in the C language.
Works with Windows and X Windows
http://enchantia.com/graphapp/

Anti-Grain Geometry
C++ free graphics library for Windows and X11. Includes SVG viewer.
http://www.antigrain.com/about/index.html

CEGUI
Crazy Eddie's GUI System C++ library providing windowing and widgets for graphics APIs/engines
http://cegui.org.uk/wiki/Main_Page

Guichan
Portable C++ gaming library for Allegro, SDL and/or OpenGL
https://sourceforge.net/projects/guichan/

AntTweakBar
C/C++ GUI library for OpenGL and DirectX applications.
http://anttweakbar.sourceforge.net/doc/

Agar
C Cross-platform toolkit for graphical applications.
Difficult to build on some systems and some versions can be buggy.
http://libagar.org/

LibUFO
LibUFO Universal Form Objects, C++ core library for forms.
http://libufo.sourceforge.net/index.html

VGUI
C++ V GUI library and IDE (VIDE).
http://vgui.sourceforge.net/

IUP
Multi-platform toolkit for building graphical user interfaces. with API in three languages: C, Lua and LED.
http://webserver2.tecgraf.puc-rio.br/iup/

Milkymist GUI toolkit
C GUI library
https://github.com/m-labs/mtk

m2tklib
Mini Interative Interface Toolkit Library
https://code.google.com/archive/p/m2tklib/

ftk
Funny tool kit, a C cross-platform embedded GUI
https://github.com/xianjimli/ftk
Links to dialog and dialog-like utilities for use mainly with scripting or possibly creating simple GUIs with C programs are covered below. Dialog utilities are typically used on POSIX systems. There are some notes on portability to Windows platforms.

URLs are accurate as of when this was posted. However, they can change over time. You can use a search engine or archive.org wayback tool to find pages that have been moved or backups of older versions of pages.

Dialog
https://web.archive.org/web/20130602021132/http://www.openwatcom.org/index.php/Dialog_howto
How To for building Dialog on OpenWatcom. It builds on MinGW with msys just as well. However, a few of the lines in the OpenWatcom patches for handling directory structures differently aren't needed. Dialog provides console GUI interaction for batch and shell scripts.

I have a newer set of patches for dialog that adds more feature support on Windows. If there's interest, I can upload the source code as part of my LM BLD project at some point: http://www.distasis.com/cpp/lmbld.htm

LM BLD ui patches
http://www.distasis.com/cpp/lmbld.htm#lmbldui
Patches to cross-platform portable browsers so that they can be used as user interfaces. Offers the ability to create user interfaces with basic HTML and CSS. Can work with UTF-8 files to support internationalization. I personally prefer this method to scripting with dialog. HTML and CSS are standardized and there's more control over the look and feel of dialogs.

Gui It !
http://www.lprp.fr/soft/misc/guiit/guiit_en.php3?lid=320
WxWidgets based front ends using simple XML configuration files.

yad
https://sourceforge.net/projects/yad-dialog/
Yet another dialog, this is a fork of zenity with many added features. Uses GTK+ 2 to offer Windows look and feel for user interface objects and offers cross-platform use. Support for MinGW has been added to the source code. GTK+ 3 port available.

zenity
http://www.placella.com/software/zenity/
This provides a simple GUI interface for batch and shell scripts. It's been ported from POSIX systems to work with MinGW, msys and GTK+ 2. Similar to Dialog, but possibly less functions. Latest version of zenity supports GTK+ 3.

gxmessage
http://crash.ihug.co.nz/~trmusson/programs.html
Builds with MinGW and msys if GTK libraries (2 or 3) are installed. Similar to Dialog but slightly different functionality.

Xdialog
http://xdialog.free.fr/
Builds with MinGW and msys if GTK libraries are installed. Dialog port using GTK instead of pdcurses. Used following configure options: ./configure --with-gtk2 --with-scanf-calls.

gtkdialog
https://web.archive.org/web/20120303170146/http://linux.pte.hu/~pipas/gtkdialog
http://puppylinux.org/wikka/gtkdialog
Has much more functionality than Dialog or Zenity. Compiles and builds fine with MinGW and msys. However, when run to produce a dialog through a script, it hangs, presumably due to threading issues on Windows. Tried adding -mwindows -mthreads to CFLAGS and -lpthread to the libraries, but worked the same.

lxdialog
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/scripts/kconfig/lxdialog?id=HEAD
Haven't tried porting this to Windows. It provides a dialog like interface for Linux kernel configuration.

libdialog
http://ftp.tw.freebsd.org/pub/FreeBSD-stable/src/gnu/lib/libdialog/
FreeBSD dialog library for use with C programs.
If you need pthreads for Windows MinGW projects, most projects used pthreads-win32 from Red Hat. However, it wasn't completely compatible with POSIX versions of pthreads. It also uses LGPL licensing which can be somewhat restrictive with MIT and BSD style licensed projects. So, the MinGW64 project wrote their own pthreads implementation from scratch which is available at the MinGW64 web site. Looking at the code, I wasn't sure if the MinGW64 pthreads implementation would work with the MinGW (www.mingw.org) 32 bit compiler as is or if it would need patching. So, I decided to use another alternative for my own projects. Another option on Windows is the midipix project which uses the musl C library pthread implementation.

Many libraries including musl add C11 and C++11 thread support using their POSIX thread implementations. That's because pthreads were available long before the C11 standards were created.

I wanted a simple, cross-platform portable implementation of pthreads. I also wanted to learn more about threads especially C11 threading standards. So, I wrote my own C11 threads library and a pthreads implementation based on it. C11 threads seem more concise, so I wanted to implement C11 support independent of pthreads and then tried implementing pthreads using C11 threads. My library mainly uses semaphores (which are available on most systems). I've read that systems like Haiku exclusively use semaphores for synchronization. While the library is written for portability, I haven't finished adding code or testing for certain platforms. I have used my threading libraries when building MinGW (my own 32 bit version of the compiler) with C++11 threading support enabled.

Before I wrote my library, I used c11threads and TinyCThread with various projects I was porting to fill the gap in support for C11 and C++11 threads. Both are useful if you don't have other alternatives. Now, that I've built MinGW with my own thread libraries, I haven't had any major issues with C11, C++11 and POSIX thread support.

Here are some links I like related to thread libraries and implementations.

Interesting article on semaphores also some source code examples:
http://preshing.com/20150316/semaphores-are-surprisingly-versatile/

Article on benaphores with sample code:
http://preshing.com/20120226/roll-your-own-lightweight-mutex/

Recursive mutex using benaphores with sample code:
http://preshing.com/20120305/implementing-a-recursive-mutex/

Haiku - articles on Condition Variables
https://www.haiku-os.org/legacy-docs/benewsletter/Issue4-39.html
https://www.haiku-os.org/legacy-docs/benewsletter/Issue4-40.html

pthreads-win32
http://sourceware.org/pthreads-win32/

Bionic C library pthreads implementation
https://android.googlesource.com/platform/bionic/+/master/libc/bionic/

Haiku pthread implementation
https://github.com/luciang/haiku/tree/master/src/system/libroot/posix/pthread

TinyCThread
C11 threads implementation
https://tinycthread.github.io/

c11threads
GNU compatibility headers for C11 thread support
https://github.com/jtsiomb/c11threads

Upthreads
A user space implementation of the POSIX thread library implemented using setjmp/longjump (or equivalent).
http://upthread.sourceforge.net/

July 2025

S M T W T F S
  12345
67891011 12
13141516171819
20212223242526
2728293031  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 17th, 2025 01:10 pm
Powered by Dreamwidth Studios