The Aqualung development team is pleased to announce the latest
release of the Aqualung music player.
Aqualung is an advanced music player originally targeted at the
GNU/Linux operating system, today also running on FreeBSD, OpenBSD and
Microsoft Windows. It plays audio CDs, internet radio streams and
podcasts as well as soundfiles in just about any audio format and has
the feature of inserting no gaps between adjacent tracks.
The ChangeLog lists major new features and is included below.
Packagers, please note that from this release, TagLib is no longer a
dependency of Aqualung.
Website: http://aqualung.sf.net
Enjoy,
Tom
2007-12-19 Tom Szilagyi <tszilagyi at users dot sourceforge dot net>
* Aqualung 0.9beta9
http://aqualung.sf.net
This is a major release bringing significant new functionality and
many important fixes. All users are encouraged to upgrade.
As always, the up-to-date User Manual is available at:
http://aqualung.sourceforge.net/?tab=docs
Major additions:
* Fundamentally new Metadata system, using native decoders and private
code instead of TagLib to provide complete support for reading and
writing metadata, including ID3v1, ID3v2.3, ID3v2.4, APE, Ogg Xiph
comments and FLAC picture frames, as well as read-only support for
ReplayGain in Musepack stream data and various metadata received in
internet radio streams. Aqualung also provides a batch tagger facility
to quickly propagate Music Store metadata to file metadata.
* Support for podcasts. Aqualung can subscribe to RSS and Atom audio
podcasts, and automatically download and add new files to the Music
Store. Optional limits for the age, size and number of downloaded
files can be set.
* Support for exporting files from Music Store or Playlist with audio
transcoding and intelligent metadata transfer. Useful for burning your
favourite tracks to CD, filling your portable player, etc.
* Aqualung now compiles and runs on OpenBSD.
* Smoother skin changing.
* Option to disable skin support (for themed environments).
* Lots of fixes, cleanups & refactoring.
DROPPED DEPENDENCIES:
* TagLib is not used anymore.
Yes, it's about time. Much as the long due FluidSynth 1.0.8 release,
really "Its about funky time!". Time also for season greetings and some
gift exchange. Don't ask for a second best, here you have the finest
pair of socks for the holiday ;)
Qsynth 0.3.2 (unstable-qt4) is out!
The official download site is, as always have been:
http://qsynth.sourceforge.nethttp://sourceforge.net/projects/qsynth
Straight from the change-log:
- A new option to start the program minimized when the system tray
icon is enabled, is now available from Setup/Misc/Start minimized
to system tray.
- Regression from QSystemTrayIcon (Qt4 >= 4.2) implementation, at
least on X11 environments: while the main application widget was
minimized to the system-tray, closing any other top-level widget
was causing the immediate and unexpected application shutdown.
- Minor corrections on the output peak meter scale aesthetics.
- Tool/child windows position and size preservation fixed.
- Orphaned MIDI device name no longer mistaken when switching
between MIDI drivers on engine setup.
- A bit more of precision is achieved over the output peak meters.
- Messages line limit was not being checked, now honored.
- Simple as it could ever be, the build executive summary report
is now given on configure.
- Get configure to try and detect the correct qmake location and
insert it the search order, so let the qt4 tools take precedence
when --with-qt option is given and older qt3 ones coexist and
are found located ahead in the PATH.
- The infamous "Keep child windows always on top" global option is
now supposed to behave a little better when disabled, layering
child windows as naturally as far the window manager dictates.
- Inspired on Andreas Persson patch, while on qjackctl-devel, which
made it possible to compile and run with older Qt 4.1, similar
arrangements were carried out on qsynth too, without hesitation.
- Main panel spin-boxes gets accelerated when stressed (Qt >= 4.2).
Cheers && Enjoy,
--
rncbc aka Rui Nuno Capela
http://createdigitalmusic.com/2007/12/17/wormhole2-tool-routes-audio-over-n…
as if you needed another reason for eternal gratitude from the entire
planet ...
could be a pair of JACK client or even a JACK backend, or a
replacement/alternative to netjack ....
and lets try to temporarily ignore the call from Anders to port to
"Linux VST", which benefits precisely 1 or 2 applications :)
--p
Some new stuff on
<http://www.kokkinizita.net/linuxaudio/downloads>
Two new shared libraries:
zita-resampler-0.1.0
zita-convolver-0.1.0
Both C++. Unlike the libcl* series which are my 'personal
toolset' that I assume nobody will want to re-use, the zita
series of libraries will be fully documented.
The resampler already comes with HTML documentation, for
the convolver this is 'under construction'. This release
of zita-convolver is provided mainly as a dependency of
jconv-0.2.0
Command line JACK app for real-time fft-based partitioned
convolution with non-uniform partition size. Provides low
or zero delay processing at moderate CPU loads.
Any convolution matrix up to 64 * 64 as long as your CPU(s)
can take it. From the README:
New in this release
-------------------
- The convolution engine has been separated into
a shared library, libzita-convolver. For more
information on the internals of the convolution
engine, see the documentation provided with this
library.
- A non-real-time, file processing version of jconv,
called fconv, has been added. It accepts the same
configuration files. The input can be any file
readable by libsndfile. The output will be a 24-
bit WAV or WAVEX (for more than 2 channels).
- Large configurations requiring too much memory
will fail with an error message rather than just
crash with a segfault.
- Now uses jack_client_open(), so multiple instances
can be run even without using the -N <jack_name>
option.
- Optional use of FFTW_MEASURE.
- Added the mkwavex utility, converts multichannel
responses stored in separate files to a single
WAVEX file.
- New config files for some AMB reverbs.
The nicest one of these is York Minster, which
really sounds great.
Enjoy !
--
FA
Laboratorio di Acustica ed Elettroacustica
Parma, Italia
Lascia la spina, cogli la rosa.
Hello,
I've installed the slv2 package on my machine but can't run any plugins?
When I start
lv2_jack_host
get lots of known plugins URI's like
http://ll-plugins.nongnu.org/lv2/dev/klaviatur/0.0.0
which I want to run.
But when I start I get
lv2_jack_host http://ll-plugins.nongnu.org/lv2/dev/klaviatur/0.0.0
Failed to find plugin http://ll-plugins.nongnu.org/lv2/dev/klaviatur/0.0.0.
also running it with
lv2_jack_host /usr/lib/lv2/klaviatur.lv2/manifest.ttl
URI: /usr/lib/lv2/klaviatur.lv2/manifest.ttl
Failed to find plugin /usr/lib/lv2/klaviatur.lv2/manifest.ttl.
or
lv2_jack_host file://usr/lib/lv2/klaviatur.lv2/manifest.ttl
URI: file://usr/lib/lv2/klaviatur.lv2/manifest.ttl
Failed to find plugin file://usr/lib/lv2/klaviatur.lv2/manifest.ttl.
fails.
Can anybody give me a hint how to start this host with the correct URI
parameter?
Thanks
Chris
hi everyone!
i'm looking for a simple way of creating a system's phase response graph
from its impulse response. i know the maths is trivial, but i couldn't
find a program that does it... anyone? if possible, i'd prefer a quick
solution that does not involve having to learn GNU octave or the
intricacies of gnuplot :)
thanks,
jörn
--
jörn nettingsmeier
home://germany/45128 essen/lortzingstr. 11/
http://spunk.dnsalias.org
phone://+49/201/491621
Kurt is up in Heaven now.
Does anyone know if any of the cards that support Dolby Digital live (DDL)
have linux support including the DDL support. I couldn't really find mention
of linux DDL support anywhere.
Thanks,
Nathanael
Attached are two patches:
* The logs patch replaces various calls to fprintf(),printf() and
fputs() with calls to jack_error() and newly appeared jack_info()
functionality. It also fixes some obvious error/info log mismatches
in current code.
* The dbus patch provides additional fronted to jack server, alternative
to jackd. the dbus object is auto activatated when
needed. Starting and stopping of the jack server are methods of the
dbus object. Other methods are for setting/getting jack
settings. Settings are being persisted.
D-Bus patch requires logs patch. As currently exported it also requires
midi-alsa-munge patch, but this is not real requirement.
So patch apply order is (against latest svn, tested with r1070):
* jackd-midi-alsa-munge-r1051.patch (p0)
* jack-logs-20071209-r1070.patch (p1)
* jack-dbus-20071209-r1070.patch (p1)
What is not implemented yet:
* Provide access to clock source parameter (tricky)
* Provide access to debug-timer parameter (not fully documented -
optarg)
* Send signals to (control) apps (status changes, connections, clients,
port renames, xruns, error and info logs)
* In client library, when compiled with dbus support, try to start via
dbus frontend first (auto-activation)
* Implement configurator supporting multiple user configurations
(separate D-Bus object)
D-Bus patch currently requires dbus-glib for main code and libxml2 for
settings persistence. Applying patch enables configure time checks for
required libraries and if they are not present, corresponding feature is
not built.
Currently there is problem with ffado driver (freebob works). libffado
uses libxml++ that uses libxml2. libxml2 has quite lot of global
things, Including global hooks used by libxml++ and initialized in
constructor global object. To avoid crashes when ffado driver is
available, it is ignored by the jackdbus frontend (it is still available
in jackd). This is temporary solution. I could of course don't use
libxml2 but this will only delay effect in ffado driver until some other
driver is starts using libxml2.
After compiling and installing jackdbus, you will get also a small
python app, jack_control that allows accessing of jackdbus. jack_control
is test app, and while quite usable is not supposed to be in line with
full-featured jack control apps like qjackctl and patchage.
Theory of operation:
JACK server works in background with log file and settings preserved in
~/.jackdbus/ directory. jack controller dbus object is autoactivated
when accessed. Thus jack server works in background while allowing to
access it post factum, either logs, settings or start/stop.
Multiconfig functionality is provided by separate object to be reused by
control apps like patchage and qjackctl. All of them will reuse jack
presets and user will get transparent workflow.
If they adapt it. Dave, Rui?
--
Nedko Arnaudov <GnuPG KeyID: DE1716B0>
hello,
I am trying to develop an app using jack. My first goal is to play a
stereo wav.
I've used clockloop http://plugin.org.uk/clockloop by Steve Harris as a
starting point. It uses libsndfile to open a mono wav.
I've reached a point where 2 outputs are created and connected to the
first two outputs of the sound card.
I managed to send a mono file to both outs. I've opened a stereo file,
but I'm having trouble outputting it correctly.
I am a bit confused on how to continue.
If someone could give me some pointers would be much appreciated.
thanks in advance
stefanos
This is what I have so far:
//================ audio.c ===============
/*
* Copyright (C) 2003 Steve Harris
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <stdlib.h>
#include <jack/jack.h>
#include "audio.h"
#include <stdio.h>
buffer_t *buffers = NULL;
unsigned int buffer_size = 0;
unsigned int num_buffers = 0;
unsigned int play_pos = 0;
float gain_inc = 0.01f;
float c_gain = 0.1f;
jack_client_t *client;
jack_port_t *output_port_ML;
jack_port_t *output_port_MR;
int process(jack_nframes_t nframes, void *arg)
{
unsigned int i,j;
sample_t *outML = (sample_t *)jack_port_get_buffer(output_port_ML,
nframes);
sample_t *outMR = (sample_t *)jack_port_get_buffer(output_port_MR,
nframes);
for (j=0; j<nframes; j++) {
outML[j] = 0.0f;
outMR[j] = 0.0f;
}
for (i=0; i<num_buffers; i=i++) {
if (buffers[i].state == on) {
for (j=0; j<nframes; j++) {
outML[j] += (buffers[i].data[(play_pos + j) %
buffer_size]) * c_gain;
outMR[j] += (buffers[i].data[(play_pos + j) %
buffer_size]) * c_gain;
}
}
}
play_pos = (play_pos + nframes) % buffer_size;
return 0;
}
//====================== audio.h ======================
#ifndef AUDIO_H
#define AUDIO_H
#include <jack/jack.h>
typedef jack_default_audio_sample_t sample_t;
typedef enum {
off,
on,
ramp_down,
ramp_up,
} b_state;
typedef struct {
float *data;
float gain;
b_state state;
} buffer_t;
extern buffer_t *buffers;
extern unsigned int buffer_size;
extern unsigned int num_buffers;
extern jack_client_t *client;
extern jack_port_t *output_port_ML;
extern jack_port_t *output_port_MR;
extern float gain_inc;
int process(jack_nframes_t nframes, void *arg);
#endif
//=================== clockloop.c =======================
/*
* Copyright (C) 2003 Steve Harris
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*/
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <alsa/asoundlib.h>
#include <sndfile.h>
#include "audio.h"
void midi_action(snd_seq_t * seq_handle);
jack_client_t *client;
jack_port_t *output_port_ML;
jack_port_t *output_port_MR;
int main(int argc, char **argv)
{
unsigned int i;
int count;
const char **ports;
if (argc < 2) {
fprintf(stderr, "Usage: %s <audio-file> ...\n", argv[0]);
return 1;
}
/* JACK stuff */
if ((client = jack_client_new("clock-loop")) == 0) {
fprintf (stderr, "jack server not running?\n");
return 1;
}
jack_set_process_callback (client, process, 0);
output_port_ML = jack_port_register (client, "out_Master_Left",
JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0);
output_port_MR = jack_port_register (client, "out_Master_Right",
JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0);
num_buffers = argc - 1;
buffers = malloc(sizeof(buffer_t) * num_buffers *
2); // *2 for stereo
buffer_size = 0;
for (i = 0; i<num_buffers; i++) {
SNDFILE *sf;
SF_INFO sfi;
sfi.format = 0;
sf = sf_open(argv[i + 1], SFM_READ, &sfi);
/*if (sfi.channels != 1) {
fprintf(stderr, "%s: only works with mono files\n", argv[0]);
return 1;
}*/
if (!buffer_size) {
buffer_size = sfi.frames;
gain_inc = (float)jack_get_buffer_size(client) /
(buffer_size * 8.0f);
buffers[i].state = on;
buffers[i].gain = 1.0f;
} else {
buffers[i].state = off;
buffers[i].gain = 0.0f;
}
if (sfi.frames > buffer_size) {
fprintf(stderr, "%s warning: '%s' is %d frames longer than
reference file, truncating\n", argv[0], argv[i+1], (int)(sfi.frames -
buffer_size));
}
buffers[i].data = malloc(buffer_size * sizeof(float));
count = sf_read_float(sf, buffers[i].data, buffer_size);
if (count < buffer_size) {
fprintf(stderr, "%s warning: only read %d/%d frames from
file '%s', zero padding\n", argv[0], count, buffer_size, argv[i+1]);
memset(buffers[i].data + count, 0, buffer_size - count);
}
sf_close(sf);
}
if (jack_activate(client)) {
fprintf (stderr, "cannot activate client");
exit(1);
}
/* connect the ports*/
if ((ports = jack_get_ports (client, NULL, NULL,
JackPortIsPhysical|JackPortIsInput)) == NULL) {
fprintf(stderr, "Cannot find any physical playback ports\n");
exit(1);
}
if (jack_connect (client, jack_port_name (output_port_ML),
ports[0])) {
fprintf (stderr, "cannot connect output ports\n");
}
if (jack_connect (client, jack_port_name (output_port_MR),
ports[1])) {
fprintf (stderr, "cannot connect output ports\n");
}
for(;;)
sleep (1);
}