You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(27) |
Nov
(120) |
Dec
(16) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
(65) |
Feb
(2) |
Mar
(53) |
Apr
(15) |
May
|
Jun
(19) |
Jul
(8) |
Aug
(35) |
Sep
(17) |
Oct
(70) |
Nov
(87) |
Dec
(94) |
2004 |
Jan
(133) |
Feb
(28) |
Mar
(45) |
Apr
(30) |
May
(113) |
Jun
(132) |
Jul
(33) |
Aug
(29) |
Sep
(26) |
Oct
(11) |
Nov
(21) |
Dec
(60) |
2005 |
Jan
(108) |
Feb
(153) |
Mar
(108) |
Apr
(44) |
May
(72) |
Jun
(90) |
Jul
(99) |
Aug
(67) |
Sep
(117) |
Oct
(38) |
Nov
(40) |
Dec
(27) |
2006 |
Jan
(16) |
Feb
(18) |
Mar
(21) |
Apr
(71) |
May
(26) |
Jun
(48) |
Jul
(27) |
Aug
(40) |
Sep
(20) |
Oct
(118) |
Nov
(69) |
Dec
(35) |
2007 |
Jan
(76) |
Feb
(98) |
Mar
(26) |
Apr
(126) |
May
(94) |
Jun
(46) |
Jul
(9) |
Aug
(89) |
Sep
(18) |
Oct
(27) |
Nov
|
Dec
(49) |
2008 |
Jan
(117) |
Feb
(40) |
Mar
(18) |
Apr
(30) |
May
(40) |
Jun
(10) |
Jul
(30) |
Aug
(13) |
Sep
(29) |
Oct
(23) |
Nov
(22) |
Dec
(35) |
2009 |
Jan
(19) |
Feb
(39) |
Mar
(17) |
Apr
(2) |
May
(6) |
Jun
(6) |
Jul
(8) |
Aug
(11) |
Sep
(1) |
Oct
(46) |
Nov
(13) |
Dec
(5) |
2010 |
Jan
(21) |
Feb
(3) |
Mar
(2) |
Apr
(7) |
May
(1) |
Jun
(26) |
Jul
(3) |
Aug
(10) |
Sep
(13) |
Oct
(35) |
Nov
(10) |
Dec
(17) |
2011 |
Jan
(26) |
Feb
(27) |
Mar
(14) |
Apr
(32) |
May
(8) |
Jun
(11) |
Jul
(4) |
Aug
(7) |
Sep
(27) |
Oct
(25) |
Nov
(7) |
Dec
(2) |
2012 |
Jan
(20) |
Feb
(17) |
Mar
(59) |
Apr
(31) |
May
|
Jun
(6) |
Jul
(7) |
Aug
(10) |
Sep
(11) |
Oct
(2) |
Nov
(4) |
Dec
(17) |
2013 |
Jan
(17) |
Feb
(2) |
Mar
(3) |
Apr
(4) |
May
(8) |
Jun
(3) |
Jul
(2) |
Aug
|
Sep
(3) |
Oct
|
Nov
|
Dec
(1) |
2014 |
Jan
(6) |
Feb
(26) |
Mar
(12) |
Apr
(14) |
May
(8) |
Jun
(7) |
Jul
(6) |
Aug
(6) |
Sep
(3) |
Oct
|
Nov
|
Dec
|
2015 |
Jan
(9) |
Feb
(5) |
Mar
(4) |
Apr
(9) |
May
(3) |
Jun
(2) |
Jul
(4) |
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
(3) |
2016 |
Jan
(2) |
Feb
(4) |
Mar
(5) |
Apr
(4) |
May
(14) |
Jun
(31) |
Jul
(18) |
Aug
|
Sep
(10) |
Oct
(3) |
Nov
|
Dec
|
2017 |
Jan
(39) |
Feb
(5) |
Mar
(2) |
Apr
|
May
(52) |
Jun
(11) |
Jul
(36) |
Aug
(1) |
Sep
(7) |
Oct
(4) |
Nov
(10) |
Dec
(8) |
2018 |
Jan
(3) |
Feb
(4) |
Mar
|
Apr
(8) |
May
(28) |
Jun
(11) |
Jul
(2) |
Aug
(2) |
Sep
|
Oct
(1) |
Nov
(2) |
Dec
(25) |
2019 |
Jan
(12) |
Feb
(50) |
Mar
(14) |
Apr
(3) |
May
(8) |
Jun
(17) |
Jul
(10) |
Aug
(2) |
Sep
(21) |
Oct
(10) |
Nov
|
Dec
(28) |
2020 |
Jan
(4) |
Feb
(10) |
Mar
(7) |
Apr
(16) |
May
(10) |
Jun
(7) |
Jul
(2) |
Aug
(5) |
Sep
(3) |
Oct
(3) |
Nov
(2) |
Dec
(1) |
2021 |
Jan
|
Feb
(5) |
Mar
(13) |
Apr
(13) |
May
(7) |
Jun
|
Jul
(1) |
Aug
(11) |
Sep
(12) |
Oct
(7) |
Nov
(26) |
Dec
(41) |
2022 |
Jan
(23) |
Feb
|
Mar
(8) |
Apr
(1) |
May
|
Jun
|
Jul
|
Aug
(2) |
Sep
|
Oct
(3) |
Nov
(1) |
Dec
(1) |
2023 |
Jan
|
Feb
(5) |
Mar
(2) |
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
(11) |
Sep
(5) |
Oct
(1) |
Nov
|
Dec
|
2024 |
Jan
(2) |
Feb
(4) |
Mar
(1) |
Apr
(1) |
May
(1) |
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(10) |
Dec
|
2025 |
Jan
|
Feb
(4) |
Mar
(1) |
Apr
(2) |
May
|
Jun
(17) |
Jul
(1) |
Aug
(4) |
Sep
(7) |
Oct
(1) |
Nov
|
Dec
|
From: Christian S. <sch...@li...> - 2024-03-26 12:50:18
|
Hi everyone, LinuxSampler 2.3.1 is just a small revision which fixes build errors with certain C++ stdlib versions. No behaviour changes this time. The affected code was already couple years old, so this issue is not limited to recent LinuxSampler 2.3.0 release. Best regards, Christian Schoenebeck |
From: Christian S. <sch...@li...> - 2024-02-20 17:05:01
|
Hi everyone, libgig 4.4.1 is just a small revision which only fixes build errors with some compilers, introduced by recent libgig 4.4.0 release, therefore no behaviour changes this time. Best regards, Christian Schoenebeck |
From: Christian S. <sch...@li...> - 2024-02-12 14:20:58
|
On Sunday, February 11, 2024 1:31:25 PM CET Christian Schoenebeck wrote: > On Sunday, February 11, 2024 8:56:59 AM CET Ross Maxx wrote: > > Hello again. I tried to build libgig 4.4.0 on MSVC and found a few build > > errors. > > > > 1. I had to define `ssize_t` again in `gig.h`, I previously did this in > > `serialization.h`. > > Well, it's probably time to move those fundamental type definitions and > system dependent defines into a separate, shared header file. Otherwise > we'll continue kicking the ball into other corners. https://svn.linuxsampler.org/cgi-bin/viewvc.cgi?view=revision&revision=4093 > > 2. In `RIFF.h`, line 1972, there seems to be a C++ 20 specific syntax > > wrapped in an if `_MSC_VER`, which I fixed by forcing cmake to use C++ 20 > > for MSVC alone. > > It actually affects all systems. It uses so called designated initializers > like > > foo - { > .a = 1, > .b - 2, > }; > > That's a C++20 feature indeed. With some compilers it emits a warning, on > others an error. > > I'll change the code instead. Probably a bit too early to require C++20 at > this point yet. https://svn.linuxsampler.org/cgi-bin/viewvc.cgi?view=revision&revision=4092 I will roll out a new libgig release tarball soon. But I wait some more days to see whether there are more issues to fix. /Christian > > note : We use cmake 3.1 but there seems to be a deprecation warning for > > cmake < 3.5. Might as well note it. Not sending the patch for that one > > right now as it doesn't break compilation. |
From: Christian S. <sch...@li...> - 2024-02-11 12:31:39
|
On Sunday, February 11, 2024 8:56:59 AM CET Ross Maxx wrote: > Hello again. I tried to build libgig 4.4.0 on MSVC and found a few build > errors. > > 1. I had to define `ssize_t` again in `gig.h`, I previously did this in > `serialization.h`. Well, it's probably time to move those fundamental type definitions and system dependent defines into a separate, shared header file. Otherwise we'll continue kicking the ball into other corners. I'll take care of it. > 2. In `RIFF.h`, line 1972, there seems to be a C++ 20 specific syntax > wrapped in an if `_MSC_VER`, which I fixed by forcing cmake to use C++ 20 > for MSVC alone. It actually affects all systems. It uses so called designated initializers like foo - { .a = 1, .b - 2, }; That's a C++20 feature indeed. With some compilers it emits a warning, on others an error. I'll change the code instead. Probably a bit too early to require C++20 at this point yet. /Christian > note : We use cmake 3.1 but there seems to be a deprecation warning for > cmake < 3.5. Might as well note it. Not sending the patch for that one > right now as it doesn't break compilation. |
From: Ross M. <mrr...@gm...> - 2024-02-11 07:57:27
|
Hello again. I tried to build libgig 4.4.0 on MSVC and found a few build errors. 1. I had to define `ssize_t` again in `gig.h`, I previously did this in `serialization.h`. 2. In `RIFF.h`, line 1972, there seems to be a C++ 20 specific syntax wrapped in an if `_MSC_VER`, which I fixed by forcing cmake to use C++ 20 for MSVC alone. note : We use cmake 3.1 but there seems to be a deprecation warning for cmake < 3.5. Might as well note it. Not sending the patch for that one right now as it doesn't break compilation. |
From: Christian S. <sch...@li...> - 2024-01-26 20:51:32
|
Hi everyone, a new release had been rolled out today: o LinuxSampler 2.3.0 o Gigedit 1.2.1 o libgig 4.4.0 This is basically a maintenance release, so release notes are short this time: http://doc.linuxsampler.org/Release_Notes/LinuxSampler_2_3_0/ Best regards, Christian Schoenebeck |
From: Rui N. C. <rn...@rn...> - 2024-01-24 17:15:06
|
Hi there! The first batch of the 'QStuff*': QjackCtl [1], Qsynth [2], Qsampler [3], QXGEdit [4], QmidiCtl [5] and QmidiNet [6], are here released for the (northern) Winter'24season. Enjoy the New Year. ** QjackCtl - JACK Audio Connection Kit Qt GUI Interface [1] ** QjackCtl 0.9.13 (winter'24) is out! QjackCtl is an aged yet modern, not so 'simple' anymore, Qt [7] application to control the JACK [8] sound server, for the Linux Audio [12] infrastructure. Change-log: - Graph: Make the main canvas background to mid-gray, when on non-dark color themes. - Turkish (tr) translation added. - Updated copyright headers into the New Year (2024). Website: https://qjackctl.sourceforge.io http://qjackctl.sourceforge.net Project page: https://sourceforge.net/projects/qjackctl Downloads: https://sourceforge.net/projects/qjackctl/files - source tarball: https://download.sf.net/qjackctl/qjackctl-0.9.13.tar.gz - source package: https://download.sf.net/qjackctl/qjackctl-0.9.13-57.1.rncbc.suse.src.rpm - binary packages: https://download.sf.net/qjackctl/qjackctl-0.9.13-57.1.rncbc.suse.x86_64.rpm - AppImage [20] package: https://download.sf.net/qjackctl/qjackctl-0.9.13-57.1.x86_64.AppImage Git repos: https://git.code.sf.net/p/qjackctl/code https://github.com/rncbc/qjackctl.git https://gitlab.com/rncbc/qjackctl.git https://codeberg.com/rncbc/qjackctl.git ** Qsynth - A FluidSynth Qt GUI Interface [2] ** Qsynth 0.9.13 (winter'24) is out! Qsynth is a FluidSynth [10] GUI front-end application written in C++ around the Qt framework [7] using Qt Designer. Change-log: - Add PipeWire (pw_init) support. - Updated copyright headers into the New Year (2024). Website: https://qsynth.sourceforge.io http://qsynth.sourceforge.net Project page: https://sourceforge.net/projects/qsynth Downloads: https://sourceforge.net/projects/qsynth/files - source tarball: https://download.sf.net/qsynth/qsynth-0.9.13.tar.gz - source package: https://download.sf.net/qsynth/qsynth-0.9.13-57.1.rncbc.suse.src.rpm - binary packages: https://download.sf.net/qsynth/qsynth-0.9.13-57.1.rncbc.suse.x86_64.rpm - AppImage [20] package: https://download.sf.net/qsynth/qsynth-0.9.13-57.1.x86_64.AppImage - Windows package (thanks to Pedro Lopez-Cabanillas): https://download.sf.net/qsynth/qsynth-0.9.13-57.1.win-x64-setup.exe - Flatpak [21] package (also thanks to Pedro Lopez-Cabanillas): https://flathub.org/apps/details/org.rncbc.qsynth Git repos: https://git.code.sf.net/p/qsynth/code https://github.com/rncbc/qsynth.git https://gitlab.com/rncbc/qsynth.git https://codeberg.com/rncbc/qsynth.git ** Qsampler - A LinuxSampler Qt GUI Interface [3] ** Qsampler 0.9.12 (winter'24) is out! Qsampler is a LinuxSampler [11] GUI front-end application written in C++ around the Qt framework [7] using Qt Designer. Change-log: - Updated copyright headers into the New Year (2024). Website: https://qsampler.sourceforge.io http://qsampler.sourceforge.net Project page: https://sourceforge.net/projects/qsampler Downloads: https://sourceforge.net/projects/qsampler/files - source tarballs: https://download.sf.net/qsampler/qsampler-0.9.12.tar.gz https://download.sf.net/qsampler/liblscp-0.9.12.tar.gz - source packages: https://download.sf.net/qsampler/qsampler-0.9.12-56.1.rncbc.suse.src.rpm https://download.sf.net/qsampler/liblscp-0.9.12-56.1.rncbc.suse.src.rpm - binary packages: https://download.sf.net/qsampler/qsampler-0.9.12-56.1.rncbc.suse.x86_64.rpm https://download.sf.net/qsampler/liblscp6-0.9.12-56.1.rncbc.suse.x86_64.rpm https://download.sf.net/qsampler/liblscp-devel-0.9.12-56.1.rncbc.suse.x86_64.rpm - AppImage [20] package: https://download.sf.net/qsampler/qsampler-0.9.12-56.1.x86_64.AppImage Git repos: https://git.code.sf.net/p/qsampler/code https://github.com/rncbc/qsampler.git https://gitlab.com/rncbc/qsampler.git https://codeberg.com/rncbc/qsampler.git https://git.code.sf.net/p/qsampler/liblscp https://github.com/rncbc/liblscp.git https://gitlab.com/rncbc/liblscp.git https://codeberg.com/rncbc/liblscp.git ** QXGEdit - A Qt XG Editor [4] ** QXGEdit 0.9.12 (winter'24) is out! QXGEdit is a live XG instrument editor, specialized on editing MIDI System Exclusive files (.syx) for the Yamaha DB50XG [14] and thus probably a baseline for many other XG devices. Change-log: - Introducing cross-platform support via RtMidi. [22] - Updated copyright headers into the New Year (2024). Website: https://qxgedit.sourceforge.io http://qxgedit.sourceforge.net Project page: https://sourceforge.net/projects/qxgedit Downloads: https://sourceforge.net/projects/qxgedit/files - source tarball: https://download.sf.net/qxgedit/qxgedit-0.9.12.tar.gz - source package: https://download.sf.net/qxgedit/qxgedit-0.9.12-56.1.rncbc.suse.src.rpm - binary packages: https://download.sf.net/qxgedit/qxgedit-0.9.12-56.1.rncbc.suse.x86_64.rpm - AppImage [20] package: https://download.sf.net/qxgedit/qxgedit-0.9.12-56.1.x86_64.AppImage Git repos: https://git.code.sf.net/p/qxgedit/code https://github.com/rncbc/qxgedit.git https://gitlab.com/rncbc/qxgedit.git https://codeberg.com/rncbc/qxgedit.git ** QmidiCtl - A MIDI Remote Controller via UDP/IP Multicast [5] ** QmidiCtl 0.9.12 (winter'24) is out! QmidiCtl [5] is a MIDI remote controller application that sends MIDI data over the network, using UDP/IP multicast. Inspired by multimidicast [15] and designed to be compatible with ipMIDI [15] for Windows. QmidiCtl [5] was long ago designed for the Maemo [17] enabled handheld devices, namely the late Nokia N900 [18] and promoted to the Maemo Package [18] repositories. Nevertheless, QmidiCtl [5] may still be found effective as a regular desktop application and recently as an Android application as well. Change-log: - Updated copyright headers into the New Year (2024). Website: https://qmidictl.sourceforge.io http://qmidictl.sourceforge.net Project page: https://sourceforge.net/projects/qmidictl Downloads: https://sourceforge.net/projects/qmidictl/files - source tarball: https://download.sf.net/qmidictl/qmidictl-0.9.12.tar.gz - source package: https://download.sf.net/qmidictl/qmidictl-0.9.12-56.1.rncbc.suse.src.rpm - binary packages: https://download.sf.net/qmidictl/qmidictl-0.9.12-56.1.rncbc.suse.x86_64.rpm - AppImage [20] package: https://download.sf.net/qmidictl/qmidictl-0.9.12-56.1.x86_64.AppImage - Android packages: https://download.sf.net/qmidictl/qmidictl-0.9.12-56.1.arm64-v8a.apk https://download.sf.net/qmidictl/qmidictl-0.9.12-56.1.x86_64.apk https://play.google.com/store/apps/details?id=org.rncbc.qmidictl Git repos: https://git.code.sf.net/p/qmidictl/code https://github.com/rncbc/qmidictl.git https://gitlab.com/rncbc/qmidictl.git https://codeberg.com/rncbc/qmidictl.git ** QmidiNet - A MIDI Network Gateway via UDP/IP Multicast [6] ** QmidiNet 0.9.12 (winter'24) is out! QmidiNet is a MIDI network gateway application that sends and receives MIDI data (ALSA-MIDI [9] and JACK-MIDI [8]) over the network, using UDP/IP multicast. Inspired by multimidicast [15] and designed to be compatible with ipMIDI [16] for Windows. Change-log: - Add Unique/Single instance support. - Updated copyright headers into the New Year (2024). Website: https://qmidinet.sourceforge.io http://qmidinet.sourceforge.net Project page: https://sourceforge.net/projects/qmidinet Downloads: https://sourceforge.net/projects/qmidinet/files - source tarball: https://download.sf.net/qmidinet/qmidinet-0.9.12.tar.gz - source package: https://download.sf.net/qmidinet/qmidinet-0.9.12-56.1.rncbc.suse.src.rpm - binary packages: https://download.sf.net/qmidinet/qmidinet-0.9.12-56.1.rncbc.suse.x86_64.rpm - AppImage [20] package: https://download.sf.net/qmidinet/qmidinet-0.9.12-56.1.x86_64.AppImage Git repos: https://git.code.sf.net/p/qmidinet/code https://github.com/rncbc/qmidinet.git https://gitlab.com/rncbc/qmidinet.git https://codeberg.com/rncbc/qmidinet.git - - - License: All of the Qstuff* are free, open-source Linux Audio [11] software, distributed under the terms of the GNU General Public License (GPL) version 2 or later [12]. References: [1] QjackCtl - A JACK Audio Connection Kit Qt GUI Interface https://qjackctl.sourceforge.io [2] Qsynth - A fluidsynth Qt GUI Interface https://qsynth.sourceforge.io [3] Qsampler - A LinuxSampler Qt GUI Interface https://qsampler.sourceforge.io [4] QXGEdit - A Qt XG Editor https://qxgedit.sourceforge.io [5] QmidiCtl - A MIDI Remote Controller via UDP/IP Multicast https://qmidictl.sourceforge.io [6] QmidiNet - A MIDI Network Gateway via UDP/IP Multicast https://qmidinet.sourceforge.io [7] Qt framework, C++ class library and tools for cross-platform application and UI development https://qt.io/ [8] JACK Audio Connection Kit https://jackaudio.org [9] ALSA, Advanced Linux Sound Architecture https://www.alsa-project.org/ [10] FluidSynth - A SoundFont Synthesizer A real-time software synthesizer based on SoundFont 2 specifications https://www.fluidsynth.org [11] LinuxSampler - The Linux Sampler Project A modular, streaming capable, realtime audio sampler https://www.linuxsampler.org [12] Linux Audio consortium of libre software for audio-related work https://linuxaudio.org [13] GPL - GNU General Public License https://www.gnu.org/copyleft/gpl.html [14] Yamaha DB50XG (https://web.archive.org/web/20150607065739/) http://www.soundonsound.com/sos/1996_articles/may96/yamahadb50xg.html [15] multimidicast - sends and receives MIDI from ALSA sequencers over network https://llg.cubic.org/tools/multimidicast [16] ipMIDI - MIDI over Ethernet ports - send MIDI over your LAN https://nerds.de [17] Maemo.org - Home of the Maemo community https://www.maemo.org [18] Maemo.org Wiki - Nokia N900 https://wiki.maemo.org/Nokia_N900 [19] Maemo.org - Downloads: QmidiCtl https://maemo.org/downloads/product/Maemo5/qmidictl [20] AppImage, Linux apps that run anywhere https://appimage.org/ [21] Flatpak, next-generation technology for building and distributing desktop applications on Linux https://flatpak.org/ [22] RtMidi, A set of (cross-platform) C++ classes that provide a common API for realtime MIDI input/output. https://github.com/thestk/rtmidi See also: https://www.rncbc.org/drupal/node/2538 See y'all soon! - - - rncbc aka Rui Nuno Capela |
From: Christian S. <sch...@li...> - 2023-10-06 16:02:47
|
On Thursday, September 28, 2023 1:44:45 PM CEST Ross Maxx wrote: [...] > Hi from the LMMS team. I am a contributor there. We use libgig for our gig > player plugin, which plays .gig files. I, along with some other devs, were > working on getting gigplayer ported to MSVC and came to know that libgig is > not there in vcpkg. So I opened a PR there to get it added. > > Here's the Pull Request link : [libgig] New Port by Rossmaxx · Pull Request > #33255 · microsoft/vcpkg (github.com) > <https://github.com/microsoft/vcpkg/pull/33255> > > While working with the port, we patched some stuff temporarily and would > like to upstream some of those patches. > > patch 1 - fix ssize_t on MSVC. MSVC compiler doesn't contain `ssize_t` but > it contains `SSIZE_T`. > > patch 2 - set minimum C++ 11 in Cmake. Missing condition, should be there. > > patch 3 - fix usage of libakai. There was an issue with cmake in libakai > > Hope you get back to me soon. Applied to SVN. Thanks! https://svn.linuxsampler.org/cgi-bin/viewvc.cgi?view=revision&revision=4063 /Christian |
From: Ross M. <mrr...@gm...> - 2023-09-28 11:45:10
|
---------- Forwarded message --------- From: Ross Maxx <mrr...@gm...> Date: Thu, Sep 28, 2023 at 1:41 PM Subject: Some patches to libgig. To: <cu...@us...> Hi from the LMMS team. I am a contributor there. We use libgig for our gig player plugin, which plays .gig files. I, along with some other devs, were working on getting gigplayer ported to MSVC and came to know that libgig is not there in vcpkg. So I opened a PR there to get it added. Here's the Pull Request link : [libgig] New Port by Rossmaxx · Pull Request #33255 · microsoft/vcpkg (github.com) <https://github.com/microsoft/vcpkg/pull/33255> While working with the port, we patched some stuff temporarily and would like to upstream some of those patches. patch 1 - fix ssize_t on MSVC. MSVC compiler doesn't contain `ssize_t` but it contains `SSIZE_T`. patch 2 - set minimum C++ 11 in Cmake. Missing condition, should be there. patch 3 - fix usage of libakai. There was an issue with cmake in libakai Hope you get back to me soon. (I originally sent this mail to Christian, who told me to forward this to the mailing list.) |
From: Christian S. <sch...@li...> - 2023-09-12 10:51:32
|
On Monday, September 11, 2023 7:31:34 AM CEST Doug Gray wrote: > Hi Christian, > Thank you for looking at this. > > I commented out the code as suggested but this did not help other than > removing the Lambda function as a candidate cause. Then it's a minor, unrelated issue. Should still be fixed, as it's apparently polling for SFZ file changes far too often. > BTW the sfz reload on > change behaviour is very useful indeed. > > Attached are two profiles taken after making this change, exampl3 is about > 15 seconds long spanning the onset and recovery of the fault event, the > second exampl4 captured during the failure event itself (~8 seconds). Looks like the heaviest part with 60% CPU is directly inside AbstractVoice::Synthesize(). Would make sense to profile which parts inside that specific method take how much of the CPU time. This method is shared with the gig engine, but some parts there are only used by the gig engine, and some parts only by the SFZ engine. > The most curious aspect of this issue for me is the way only one cpu core > hits 100% load during the event as if threads are not launching properly > beyond some threshold and become locked preventing them being killed on > say a keyoff event. Unfortunately this is just my hunch and so far I > haven't seen anything to support it withing the code. That's the expected behaviour. We don't have real SMP support. If you have exactly one audio output device instance, then there is exactly one audio thread doing all the heavy lifting of calculating the audio result for all voices. This behaviour applies to all formats, including SFZ and gig format. A workaround is creating additional audio output device instances with the sampler, then they could (depending on the audio driver) run in separate audio threads. But that's inconvenient for the user, as he would manually need to spread the setup over individual audio devices (threads). So I guess almost nobody uses that. We had discussions in the past many years ago with plans to implement real SMP support, that is automatically distributing voices to invidiual threads which in turn would deliver their result back to the main audio thread, however that never gained momentum. Simply because hardware development no longer made it necessary. With the gig engine you can run several hundred of voices with a single thread, without getting into any glitches - and that for like 12 years already if not even longer. /Christian |
From: Doug G. <dou...@gm...> - 2023-09-11 05:31:56
|
Hi Christian, Thank you for looking at this. I commented out the code as suggested but this did not help other than removing the Lambda function as a candidate cause. BTW the sfz reload on change behaviour is very useful indeed. Attached are two profiles taken after making this change, exampl3 is about 15 seconds long spanning the onset and recovery of the fault event, the second exampl4 captured during the failure event itself (~8 seconds). The most curious aspect of this issue for me is the way only one cpu core hits 100% load during the event as if threads are not launching properly beyond some threshold and become locked preventing them being killed on say a keyoff event. Unfortunately this is just my hunch and so far I haven't seen anything to support it withing the code. Doug On Sat, 9 Sept 2023 at 20:11, Christian Schoenebeck < sch...@li...> wrote: > On Wednesday, August 30, 2023 12:49:24 PM CEST Doug Gray wrote: > > Christian, > > Yes the output I posted began just before pressing sufficient keys to > > trigger the failure event, ie laying my arm across the keys. Capturing > > only the key presses, the failure itself and subsequent recovery, > > approximately 11 seconds in all. Fortunately sysprof tool allowed > > capturing an interval like this. > > OK, I was just confused because of the > > sfz::InstrumentResourceManager::SfzResourceManager::Create() > > method call in your output, which should only be called while loading an > instrument, not during normal real-time playback. > > But I just realized that I misinterpreted the output: it is just there > because > Create() originally registered a Lambda Function by calling > AddPeriodicJob(): > > > http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/linuxsampler/trunk/src/engines/sfz/InstrumentResourceManager.cpp?view=markup&pathrev=4019#l173 > > So it is that Lambda function registered by the AddPeriodicJob() call that > is > consuming those 10% CPU time. > > I am still not seeing any obvious cause for what you reported. But it is > apparent that this registered Lambda function consumes more CPU time than > it > ought to be. So I would try testing by simpling commenting out that > AddPeriodicJob() call and also by commenting out the following code block: > > 160 // perform periodic, custom jobs on behalf of external > components > 161 { > 162 LockGuard lock(periodicJobsMutex); > 163 for (ext_job_t job : periodicJobs) { > 164 job.fn(); > 165 } > 166 } > > > http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/linuxsampler/trunk/src/engines/InstrumentManagerThread.cpp?view=markup&pathrev=4019#l160 > > All it does is periodically checking if the SFZ file was externally > modified, > and if yes, it would automatically reload the SFZ file to adapt playback > according to those external SFZ file changes. > > Tha feature is for people creating new SFZ files or modifying existing > ones. > > /Christian > > > > > _______________________________________________ > Linuxsampler-devel mailing list > Lin...@li... > https://lists.sourceforge.net/lists/listinfo/linuxsampler-devel > |
From: Rui N. C. <rn...@rn...> - 2023-09-09 10:15:31
|
Hello there! Here the first batch of the 'QStuff*': QjackCtl [1], Qsynth [2], Qsampler [3], QXGEdit [4], QmidiCtl [5] and QmidiNet [6], released for the (northern) End-of-Summer'23 season. Enjoy while it's still hot. ** QjackCtl - JACK Audio Connection Kit Qt GUI Interface [1] ** QjackCtl 0.9.12 (end-of-summer'23) is out! QjackCtl is an aged yet modern, not so 'simple' anymore, Qt [7] application to control the JACK [8] sound server, for the Linux Audio [12] infrastructure. Change-log: - Setup: disable Settings parameters altogether, except frames/period (aka. buffer-size) if running in the so called 'Active' pure-client mode (eg. under PipeWire's pw-jack substitution). - Connections: Fixed an old JACK client/ports aliases malfunction, hopefully. - Graph: Ctrl+left or middle-button click-dragging for panning, is now a lot smoother, hopefully. - Graph: Click-dragging with the mouse middle-button is now used for panning only, not to start a selection anymore. - Preppings to next development cycle (Qt >= 6.6) Website: https://qjackctl.sourceforge.io http://qjackctl.sourceforge.net Project page: https://sourceforge.net/projects/qjackctl Downloads: https://sourceforge.net/projects/qjackctl/files - source tarball: https://download.sf.net/qjackctl/qjackctl-0.9.12.tar.gz - source package: https://download.sf.net/qjackctl/qjackctl-0.9.12-56.1.rncbc.suse.src.rpm - binary packages: https://download.sf.net/qjackctl/qjackctl-0.9.12-56.1.rncbc.suse.x86_64.rpm - AppImage [20] package: https://download.sf.net/qjackctl/qjackctl-0.9.12-56.1.x86_64.AppImage Git repos: https://git.code.sf.net/p/qjackctl/code https://github.com/rncbc/qjackctl.git https://gitlab.com/rncbc/qjackctl.git https://codeberg.com/rncbc/qjackctl.git ** Qsynth - A FluidSynth Qt GUI Interface [2] ** Qsynth 0.9.12 (end-of-summer'23) is out! Qsynth is a FluidSynth [10] GUI front-end application written in C++ around the Qt framework [7] using Qt Designer. Change-log: - Restore all MIDI channels synth-engine funcionality, when the output peak-meters aren't opted in. - Preppings to next development cycle (Qt >= 6.6) Website: https://qsynth.sourceforge.io http://qsynth.sourceforge.net Project page: https://sourceforge.net/projects/qsynth Downloads: https://sourceforge.net/projects/qsynth/files - source tarball: https://download.sf.net/qsynth/qsynth-0.9.12.tar.gz - source package: https://download.sf.net/qsynth/qsynth-0.9.12-56.1.rncbc.suse.src.rpm - binary packages: https://download.sf.net/qsynth/qsynth-0.9.12-56.1.rncbc.suse.x86_64.rpm - AppImage [20] package: https://download.sf.net/qsynth/qsynth-0.9.12-56.1.x86_64.AppImage - Windows package (thanks to Pedro Lopez-Cabanillas): https://download.sf.net/qsynth/qsynth-0.9.12-56.1.win-x64-setup.exe - Flatpak [21] package (thanks again to Pedro Lopez-Cabanillas): https://flathub.org/apps/details/org.rncbc.qsynth Git repos: https://git.code.sf.net/p/qsynth/code https://github.com/rncbc/qsynth.git https://gitlab.com/rncbc/qsynth.git https://codeberg.com/rncbc/qsynth.git ** Qsampler - A LinuxSampler Qt GUI Interface [3] ** Qsampler 0.9.11 (end-of-summer'23) is out! Qsampler is a LinuxSampler [11] GUI front-end application written in C++ around the Qt framework [7] using Qt Designer. Change-log: - Preppings to next development cycle (Qt >= 6.6) Website: https://qsampler.sourceforge.io http://qsampler.sourceforge.net Project page: https://sourceforge.net/projects/qsampler Downloads: https://sourceforge.net/projects/qsampler/files - source tarballs: https://download.sf.net/qsampler/qsampler-0.9.11.tar.gz https://download.sf.net/qsampler/liblscp-0.9.11.tar.gz - source packages: https://download.sf.net/qsampler/qsampler-0.9.11-55.1.rncbc.suse.src.rpm https://download.sf.net/qsampler/liblscp-0.9.11-55.1.rncbc.suse.src.rpm - binary packages: https://download.sf.net/qsampler/qsampler-0.9.11-55.1.rncbc.suse.x86_64.rpm https://download.sf.net/qsampler/liblscp6-0.9.11-55.1.rncbc.suse.x86_64.rpm https://download.sf.net/qsampler/liblscp-devel-0.9.11-55.1.rncbc.suse.x86_64.rpm - AppImage [20] package: https://download.sf.net/qsampler/qsampler-0.9.11-55.1.x86_64.AppImage Git repos: https://git.code.sf.net/p/qsampler/code https://github.com/rncbc/qsampler.git https://gitlab.com/rncbc/qsampler.git https://codeberg.com/rncbc/qsampler.git https://git.code.sf.net/p/qsampler/liblscp https://github.com/rncbc/liblscp.git https://gitlab.com/rncbc/liblscp.git https://codeberg.com/rncbc/liblscp.git ** QXGEdit - A Qt XG Editor [4] ** QXGEdit 0.9.11 (end-of-summer'23) is out! QXGEdit is a live XG instrument editor, specialized on editing MIDI System Exclusive files (.syx) for the Yamaha DB50XG [14] and thus probably a baseline for many other XG devices. Change-log: - Preppings to next development cycle (Qt >= 6.6) Website: https://qxgedit.sourceforge.io http://qxgedit.sourceforge.net Project page: https://sourceforge.net/projects/qxgedit Downloads: https://sourceforge.net/projects/qxgedit/files - source tarball: https://download.sf.net/qxgedit/qxgedit-0.9.11.tar.gz - source package: https://download.sf.net/qxgedit/qxgedit-0.9.11-55.1.rncbc.suse.src.rpm - binary packages: https://download.sf.net/qxgedit/qxgedit-0.9.11-55.1.rncbc.suse.x86_64.rpm - AppImage [20] package: https://download.sf.net/qxgedit/qxgedit-0.9.11-55.1.x86_64.AppImage Git repos: https://git.code.sf.net/p/qxgedit/code https://github.com/rncbc/qxgedit.git https://gitlab.com/rncbc/qxgedit.git https://codeberg.com/rncbc/qxgedit.git ** QmidiCtl - A MIDI Remote Controller via UDP/IP Multicast [5] ** QmidiCtl 0.9.11 (end-of-summer'23) is out! QmidiCtl [5] is a MIDI remote controller application that sends MIDI data over the network, using UDP/IP multicast. Inspired by multimidicast [15] and designed to be compatible with ipMIDI [15] for Windows. QmidiCtl [5] was long ago designed for the Maemo [17] enabled handheld devices, namely the late Nokia N900 [18] and promoted to the Maemo Package [18] repositories. Nevertheless, QmidiCtl [5] may still be found effective as a regular desktop application and recently as an Android application as well. Change-log: - Preppings to next development cycle (Qt >= 6.6) Website: https://qmidictl.sourceforge.io http://qmidictl.sourceforge.net Project page: https://sourceforge.net/projects/qmidictl Downloads: https://sourceforge.net/projects/qmidictl/files - source tarball: https://download.sf.net/qmidictl/qmidictl-0.9.11.tar.gz - source package: https://download.sf.net/qmidictl/qmidictl-0.9.11-55.1.rncbc.suse.src.rpm - binary packages: https://download.sf.net/qmidictl/qmidictl-0.9.11-55.1.rncbc.suse.x86_64.rpm - AppImage [20] package: https://download.sf.net/qmidictl/qmidictl-0.9.11-55.1.x86_64.AppImage - Android packages: https://download.sf.net/qmidictl/qmidictl-0.9.11-55.1.arm64-v8a.apk https://download.sf.net/qmidictl/qmidictl-0.9.11-55.1.x86_64.apk https://play.google.com/store/apps/details?id=org.rncbc.qmidictl Git repos: https://git.code.sf.net/p/qmidictl/code https://github.com/rncbc/qmidictl.git https://gitlab.com/rncbc/qmidictl.git https://codeberg.com/rncbc/qmidictl.git ** QmidiNet - A MIDI Network Gateway via UDP/IP Multicast [6] ** QmidiNet 0.9.11 (end-of-summer'23) is out! QmidiNet is a MIDI network gateway application that sends and receives MIDI data (ALSA-MIDI [9] and JACK-MIDI [8]) over the network, using UDP/IP multicast. Inspired by multimidicast [15] and designed to be compatible with ipMIDI [16] for Windows. Change-log: - Preppings to next development cycle (Qt >= 6.6) Website: https://qmidinet.sourceforge.io http://qmidinet.sourceforge.net Project page: https://sourceforge.net/projects/qmidinet Downloads: https://sourceforge.net/projects/qmidinet/files - source tarball: https://download.sf.net/qmidinet/qmidinet-0.9.11.tar.gz - source package: https://download.sf.net/qmidinet/qmidinet-0.9.11-55.1.rncbc.suse.src.rpm - binary packages: https://download.sf.net/qmidinet/qmidinet-0.9.11-55.1.rncbc.suse.x86_64.rpm - AppImage [20] package: https://download.sf.net/qmidinet/qmidinet-0.9.11-55.1.x86_64.AppImage Git repos: https://git.code.sf.net/p/qmidinet/code https://github.com/rncbc/qmidinet.git https://gitlab.com/rncbc/qmidinet.git https://codeberg.com/rncbc/qmidinet.git -- License: All of the Qstuff* are free, open-source Linux Audio [11] software, distributed under the terms of the GNU General Public License (GPL) version 2 or later [12]. References: [1] QjackCtl - A JACK Audio Connection Kit Qt GUI Interface https://qjackctl.sourceforge.io [2] Qsynth - A fluidsynth Qt GUI Interface https://qsynth.sourceforge.io [3] Qsampler - A LinuxSampler Qt GUI Interface https://qsampler.sourceforge.io [4] QXGEdit - A Qt XG Editor https://qxgedit.sourceforge.io [5] QmidiCtl - A MIDI Remote Controller via UDP/IP Multicast https://qmidictl.sourceforge.io [6] QmidiNet - A MIDI Network Gateway via UDP/IP Multicast https://qmidinet.sourceforge.io [7] Qt framework, C++ class library and tools for cross-platform application and UI development https://qt.io/ [8] JACK Audio Connection Kit https://jackaudio.org [9] ALSA, Advanced Linux Sound Architecture https://www.alsa-project.org/ [10] FluidSynth - A SoundFont Synthesizer A real-time software synthesizer based on SoundFont 2 specifications https://www.fluidsynth.org [11] LinuxSampler - The Linux Sampler Project A modular, streaming capable, realtime audio sampler https://www.linuxsampler.org [12] Linux Audio consortium of libre software for audio-related work https://linuxaudio.org [13] GPL - GNU General Public License https://www.gnu.org/copyleft/gpl.html [14] Yamaha DB50XG (https://web.archive.org/web/20150607065739/) http://www.soundonsound.com/sos/1996_articles/may96/yamahadb50xg.html [15] multimidicast - sends and receives MIDI from ALSA sequencers over network https://llg.cubic.org/tools/multimidicast [16] ipMIDI - MIDI over Ethernet ports - send MIDI over your LAN https://nerds.de [17] Maemo.org - Home of the Maemo community https://www.maemo.org [18] Maemo.org Wiki - Nokia N900 https://wiki.maemo.org/Nokia_N900 [19] Maemo.org - Downloads: QmidiCtl https://maemo.org/downloads/product/Maemo5/qmidictl [20] AppImage, Linux apps that run anywhere https://appimage.org/ [21] Flatpak, next-generation technology for building and distributing desktop applications on Linux https://flatpak.org/ See also: https://www.rncbc.org/drupal/node/2461 See y'all next time! -- rncbc aka Rui Nuno Capela |
From: Christian S. <sch...@li...> - 2023-09-09 10:11:37
|
On Wednesday, August 30, 2023 12:49:24 PM CEST Doug Gray wrote: > Christian, > Yes the output I posted began just before pressing sufficient keys to > trigger the failure event, ie laying my arm across the keys. Capturing > only the key presses, the failure itself and subsequent recovery, > approximately 11 seconds in all. Fortunately sysprof tool allowed > capturing an interval like this. OK, I was just confused because of the sfz::InstrumentResourceManager::SfzResourceManager::Create() method call in your output, which should only be called while loading an instrument, not during normal real-time playback. But I just realized that I misinterpreted the output: it is just there because Create() originally registered a Lambda Function by calling AddPeriodicJob(): http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/linuxsampler/trunk/src/engines/sfz/InstrumentResourceManager.cpp?view=markup&pathrev=4019#l173 So it is that Lambda function registered by the AddPeriodicJob() call that is consuming those 10% CPU time. I am still not seeing any obvious cause for what you reported. But it is apparent that this registered Lambda function consumes more CPU time than it ought to be. So I would try testing by simpling commenting out that AddPeriodicJob() call and also by commenting out the following code block: 160 // perform periodic, custom jobs on behalf of external components 161 { 162 LockGuard lock(periodicJobsMutex); 163 for (ext_job_t job : periodicJobs) { 164 job.fn(); 165 } 166 } http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/linuxsampler/trunk/src/engines/InstrumentManagerThread.cpp?view=markup&pathrev=4019#l160 All it does is periodically checking if the SFZ file was externally modified, and if yes, it would automatically reload the SFZ file to adapt playback according to those external SFZ file changes. Tha feature is for people creating new SFZ files or modifying existing ones. /Christian |
From: Doug G. <dou...@gm...> - 2023-08-30 10:49:45
|
Christian, Yes the output I posted began just before pressing sufficient keys to trigger the failure event, ie laying my arm across the keys. Capturing only the key presses, the failure itself and subsequent recovery, approximately 11 seconds in all. Fortunately sysprof tool allowed capturing an interval like this. Re gprof, as far as I can tell the code to generate the profile log is embedded in the host application and generates the profile output file only on a clean exit. It may not have worked for me since my Linuxsampler does not exit cleanly with ctrl-c (SIGINT). Using kill to stop LS the capture file probably would not get written, if indeed it does work with c++. FYI my LS does exit with ctrl-c after initialisation. After sending the lscp configuration file ctrl-c results in a ‘Stopping disk thread .. OK’ message and hangs. Not a big problem just not clean. Doug Sent from my iPad > On 29 Aug 2023, at 7:35 pm, Christian Schoenebeck <sch...@li...> wrote: > > On Sunday, August 27, 2023 3:36:50 PM CEST Doug Gray wrote: >> Christian, >> (Resend - apologies for the previous direct send to you.) >> >> Compiled LS with "-O3 -pg -g" flags. Discovered gprof does not work with >> c++ (c, fortran and asm only) wasted an afternoon, should have read the >> first line of the man page more carefully (doh). > > I'm pretty sure gprof works with C++ frontend as well, but like I said I think > gprof was a dead end anyway (for the reasons described before), so never mind. > >> Oprofile needs to be compiled from source for my Os > > Yeah, oprofile needs some work to run *and* providing useful output. > >> but did find Sysprof available for quick install. I have attached a capture >> output summary that includes the failure mode I described previously. The >> summary zeros in on the heaviest loads. > > Looking at your data, did you capture the entire app's life time, that is from > app start over instrument loading up to the point where rendering caused the > performance issue you reported? > > Because usually what you do is limiting eithering capture or afterwards > analysis to the time period where the actual performance issue happens. In > this case we are only interested in the period where playback happens and the > audio dropouts occur. > > We don't want to have the time periods in the analysis data where the > instrument was loaded, because that taints the picture. > > /Christian > > > > > _______________________________________________ > Linuxsampler-devel mailing list > Lin...@li... > https://lists.sourceforge.net/lists/listinfo/linuxsampler-devel |
From: Christian S. <sch...@li...> - 2023-08-29 09:35:13
|
On Sunday, August 27, 2023 3:36:50 PM CEST Doug Gray wrote: > Christian, > (Resend - apologies for the previous direct send to you.) > > Compiled LS with "-O3 -pg -g" flags. Discovered gprof does not work with > c++ (c, fortran and asm only) wasted an afternoon, should have read the > first line of the man page more carefully (doh). I'm pretty sure gprof works with C++ frontend as well, but like I said I think gprof was a dead end anyway (for the reasons described before), so never mind. > Oprofile needs to be compiled from source for my Os Yeah, oprofile needs some work to run *and* providing useful output. > but did find Sysprof available for quick install. I have attached a capture > output summary that includes the failure mode I described previously. The > summary zeros in on the heaviest loads. Looking at your data, did you capture the entire app's life time, that is from app start over instrument loading up to the point where rendering caused the performance issue you reported? Because usually what you do is limiting eithering capture or afterwards analysis to the time period where the actual performance issue happens. In this case we are only interested in the period where playback happens and the audio dropouts occur. We don't want to have the time periods in the analysis data where the instrument was loaded, because that taints the picture. /Christian |
From: Doug G. <dou...@gm...> - 2023-08-27 13:37:15
|
<html><head><meta http-equiv="content-type" content="text/html; charset=us-ascii"></head><body dir="auto"><div dir="ltr"><br><div dir="ltr">Christian,</div><div dir="ltr">(Resend - apologies for the previous direct send to you.)<br><div>Compiled LS with "-O3 -pg -g" flags. Discovered gprof does not work with c++ (c, fortran and asm only) wasted an afternoon, should have read the first line of the man page more carefully (doh).</div><div>Oprofile needs to be compiled from source for my Os but did find Sysprof available for quick install. I have attached a capture output summary that includes the failure mode I described previously. The summary zeros in on the heaviest loads.</div><div><br></div><div>I'm hoping for some advice. I will look at the code myself sometime this week.<br></div><div>Thanks again for your help,</div><div>Doug</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, 26 Aug 2023 at 16:55, Christian Schoenebeck <<a href="mailto:sch...@li...">sch...@li...</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Friday, August 25, 2023 3:14:13 PM CEST Doug Gray wrote:<br> > Christian,<br> > Reading and testing the example given here I can see the process.<br> > <a href="https://www.thegeekstuff.com/2012/08/gprof-tutorial/" rel="noreferrer" target="_blank">https://www.thegeekstuff.com/2012/08/gprof-tutorial/</a><br> > <br> > From your directions to Ebab in 2020 I surmise the command line would be:<br> > <br> > CXXFLAGS="-O3 -pg -j4" ./configure && make<br> <br> You should also add -g to add debug information.<br> <br> > and execute:<br> > <br> > ./src/linuxsampler<br> > <br> > I presume -O3 are optimisations, <br> <br> Correct<br> <br> > -pg is from the current man page for gprof, <br> <br> Yeah, but that's only for gprof. It injects extra profiling code directly into <br> the binary. Other profilers like oprofile AFAICR don't need or use that.<br> <br> > and -j4 to compile using 4 cores. Is this correct?<br> <br> Correct, and not important in this case. It just speeds up the compilation.<br> <br> > (I understand not to strip the executable.)<br> <br> Correct.<br> <br> It's been a long time that I used gprof or oprofile, so not sure whether the <br> situation has improved on gprof's end, but back then (years ago) gprof had the <br> huge disadvantage that it was only capable to profile on application binary <br> level only, whereas oprofile profiled from application binary level over <br> individual system libraries, down to lowest kernel level. So oprofile <br> delivered a much more complete and accurate picture than gprof.<br> <br> For instance in this case of this SFZ engine issue, it could also be possible <br> that the bottle neck is somewhere in libsndfile or any library that libsndfile <br> calls in turn. gprof would not have revealed performance issues in libsndfile <br> or any other system lib, as it simply did not count those in.<br> <br> The gig engine does not use any third-party lib during playback of samples. <br> The SFZ engine however supports a large number of all kinds of audio files. <br> That's why the SFZ engine calls libsndfile (also during real-time playback of <br> samples) to delegate support for all those file formats. And I'm not sure if <br> libsndfile and all the libs that libsndfile calls are designed to be real-time <br> safe.<br> <br> /Christian<br> <br> <br> <br> <br> _______________________________________________<br> Linuxsampler-devel mailing list<br> <a href="mailto:Lin...@li..." target="_blank">Lin...@li...</a><br> <a href="https://lists.sourceforge.net/lists/listinfo/linuxsampler-devel" rel="noreferrer" target="_blank">https://lists.sourceforge.net/lists/listinfo/linuxsampler-devel</a><br> </blockquote></div> </div></body></html> |
From: Christian S. <sch...@li...> - 2023-08-26 06:55:33
|
On Friday, August 25, 2023 3:14:13 PM CEST Doug Gray wrote: > Christian, > Reading and testing the example given here I can see the process. > https://www.thegeekstuff.com/2012/08/gprof-tutorial/ > > From your directions to Ebab in 2020 I surmise the command line would be: > > CXXFLAGS="-O3 -pg -j4" ./configure && make You should also add -g to add debug information. > and execute: > > ./src/linuxsampler > > I presume -O3 are optimisations, Correct > -pg is from the current man page for gprof, Yeah, but that's only for gprof. It injects extra profiling code directly into the binary. Other profilers like oprofile AFAICR don't need or use that. > and -j4 to compile using 4 cores. Is this correct? Correct, and not important in this case. It just speeds up the compilation. > (I understand not to strip the executable.) Correct. It's been a long time that I used gprof or oprofile, so not sure whether the situation has improved on gprof's end, but back then (years ago) gprof had the huge disadvantage that it was only capable to profile on application binary level only, whereas oprofile profiled from application binary level over individual system libraries, down to lowest kernel level. So oprofile delivered a much more complete and accurate picture than gprof. For instance in this case of this SFZ engine issue, it could also be possible that the bottle neck is somewhere in libsndfile or any library that libsndfile calls in turn. gprof would not have revealed performance issues in libsndfile or any other system lib, as it simply did not count those in. The gig engine does not use any third-party lib during playback of samples. The SFZ engine however supports a large number of all kinds of audio files. That's why the SFZ engine calls libsndfile (also during real-time playback of samples) to delegate support for all those file formats. And I'm not sure if libsndfile and all the libs that libsndfile calls are designed to be real-time safe. /Christian |
From: Doug G. <dou...@gm...> - 2023-08-25 13:14:38
|
Christian, Reading and testing the example given here I can see the process. https://www.thegeekstuff.com/2012/08/gprof-tutorial/ >From your directions to Ebab in 2020 I surmise the command line would be: CXXFLAGS="-O3 -pg -j4" ./configure && make and execute: ./src/linuxsampler I presume -O3 are optimisations, -pg is from the current man page for gprof, and -j4 to compile using 4 cores. Is this correct? (I understand not to strip the executable.) Doug |
From: Christian S. <sch...@li...> - 2023-08-24 10:42:07
|
On Wednesday, August 23, 2023 9:13:11 AM CEST Doug Gray wrote: [...] > This configuration has achieved a very workable solution with the > Linuxsampler SFZ player, incorporating dynamic filtering within the SFZ > piano plus two effects chains in the lscp layer. My objective is to have a > playable piano for both daily practice and performance. > > Currently I am fighting with one issue that I have described previously as > 'crackling' but in fairness was not able to properly articulate the actual > issue. [...] > > With the current behaviour it is usable for practice but definitely not for > performance. If someone could test this behaviour on a platform other than > Raspberry Pi it would eliminate the platform as an issue. Otherwise any > advice or direction would be welcome, > > Doug Gray This performance issue of the SFZ engine has been reported before: https://sourceforge.net/p/linuxsampler/mailman/linuxsampler-devel/?viewmonth=202004 As I suggested there, this should be profiled such that the relevant heavy code section is identified. The previous reporter apparently lost attraction to continue profiling this issue. You can use any profiling tool of course, it doesn't have to be oprofile. /Christian |
From: Doug G. <dou...@gm...> - 2023-08-23 07:13:34
|
Hi Christian and others, I too am having some very good success with Linuxsampler on a Raspberry Pi platform and am encouraged to see Luandino Jean-Elie is having some success too. My current configuration is compiled from source version 2.2.0svn16 on a 4G Pi4 running a real time 64bit Kernel with a very acceptable performance using SFZ instruments. I began with 32 bit versions running on the same platform without the R/T kernel and have had a workable result but the 64 bit R/T kernel has been the best so far with really excellent stability and low latency. I have invested quite some effort to tailor SFZ pianos (Salamander and Stereo Rhodes) to use with my Studiologic SL88 Studio keyboard. This has a particular issue with very early note off signals and requires note off samples for the result to be pleasing. The triple sensor is not the complete answer - most piano software (sadly including the Colossus piano on my iPad which otherwise is excellent) are not compatible with the SL88 for this reason. This configuration has achieved a very workable solution with the Linuxsampler SFZ player, incorporating dynamic filtering within the SFZ piano plus two effects chains in the lscp layer. My objective is to have a playable piano for both daily practice and performance. Currently I am fighting with one issue that I have described previously as 'crackling' but in fairness was not able to properly articulate the actual issue. SET VOICE 64 and SET STREAM 64 function correctly but are far less than I require. CPU usage is never more than very light. Basically if SET VOICES and SET STREAMS values are anything bigger than 64 (say 85), old samples no longer seem to be extinguished, I observe one of the 4 CPU cores max out while the rest drop to near zero, the sound crackles badly then after one or two seconds recovers and continues normally. Using SET VOICE 256 and SET STREAM 256 does provide the voice 256 voice count and delays the onset (monitoring with the linuxsampler --statistics option) for most pieces I play. However several passages (Clair de Lune incl) still become unplayable without a very unmusical release of the damper. This happens with any SFZ instrument I have tried. I downloaded the Maestro GIG piano to test the same voice and stream settings. GIG played these flawlessly, so I believe it is an issue with SFZ. I either need to fix this or transfer the SFZ instruments to GIG (not so straightforward). The Maestro piano does use note off sounds but lacks character imho. So far I am reluctant to submit a bug report since I cannot confirm the issue is not related to the Raspberry Pi or ARM. Indeed I have reviewed the code in detail but not yet discovered the issue. (CPP is not my strong suit, my experience is with C and ASM.) With the current behaviour it is usable for practice but definitely not for performance. If someone could test this behaviour on a platform other than Raspberry Pi it would eliminate the platform as an issue. Otherwise any advice or direction would be welcome, Doug Gray |
From: Christian S. <sch...@li...> - 2023-08-22 14:19:56
|
On Saturday, August 19, 2023 3:46:16 PM CEST Luandino Jean-Elie wrote: > Hello, > > I'm writing to you after using Linuxsampler and Gigedit. > They are amazing pieces of software ! Thanks to you, I can load and > play Gigastudio files on a Raspberry Pi computer. > > I have an issue though, trying to trigger samples with the sustain pedal. > Could you tell me if I am wrong but it looks like it can only be > achieved using scripts inside gigedit. I started to read NKSP book but > I have to admit that I got lost. There is also the "release trigger" dimension in the Giga format, which you could use instead of a NKSP script. > I just want to trigger pedal up and down samples with the sustain > pedal ( cc 64 ). > Maybe that is a few lines to write in the script. As for a NKSP script approach, you could start with something like: on controller { play a note when sustain pedal was pressed down } if ($CC_NUM = 64 and %CC[64] > 63) play_note(<note-number>) end if end controller And replace <note-number> with the desired MIDI note (key on the keyboard) to play. I guess it would be helpful to also have a bunch of, at least common, NKSP examples on the website. Also keep in mind, you can also always look for Native Instruments KSP script examples. There are tons of those out there. /Christian |
From: Luandino Jean-E. <lua...@gm...> - 2023-08-19 13:46:38
|
Hello, I'm writing to you after using Linuxsampler and Gigedit. They are amazing pieces of software ! Thanks to you, I can load and play Gigastudio files on a Raspberry Pi computer. I have an issue though, trying to trigger samples with the sustain pedal. Could you tell me if I am wrong but it looks like it can only be achieved using scripts inside gigedit. I started to read NKSP book but I have to admit that I got lost. I just want to trigger pedal up and down samples with the sustain pedal ( cc 64 ). Maybe that is a few lines to write in the script. Thank you for your answer Best regards Luandino JEAN-ELIE |
From: Christian S. <sch...@li...> - 2023-08-18 08:55:41
|
On Wednesday, August 16, 2023 12:20:57 PM CEST Doug Gray wrote: > So far I have not been able to find documentation for gig in Linuxsampler > that addresses which CC controls are implemented and what their > functionality might be. There is none. > My keyboard has limited controls but the few it has can be allocated as > necessary. I have been able to discover a few (volume, pan, damper, port) > but I need a definitive list. Checking the source is not much help since > many look to be placeholders rather than implemented. There are patch dependent CCs where the loaded instrument defines which CCs shall do what exactly, and OTOH there are hard coded CCs which always serve the same purpose no matter what instrument is loaded. There are two places in the source files which I can point you to for those hard coded CCs. You could check those, ask questions here on the list if needed. And maybe you'll be the one starting a list for those. Up to you. /Christian |
From: Doug G. <dou...@gm...> - 2023-08-16 10:21:23
|
So far I have not been able to find documentation for gig in Linuxsampler that addresses which CC controls are implemented and what their functionality might be. My keyboard has limited controls but the few it has can be allocated as necessary. I have been able to discover a few (volume, pan, damper, port) but I need a definitive list. Checking the source is not much help since many look to be placeholders rather than implemented. I hope someone may be able to point me in the right direction. Doug Sent from my iPad |
From: Rui N. C. <rn...@rn...> - 2023-06-01 16:37:55
|
Hello! The first batch of the 'QStuff*': QjackCtl [1], Qsynth [2], Qsampler [3], QXGEdit [4], QmidiCtl [5] and QmidiNet [6], are all being released for the (northern) Spring'23 season. Enjoy while it's warm. ** QjackCtl - JACK Audio Connection Kit Qt GUI Interface [1] ** QjackCtl 0.9.11 (spring'23) released! QjackCtl is an aged yet modern, not so 'simple' anymore, Qt [7] application to control the JACK [8] sound server, for the Linux Audio [12] infrastructure. Change-log: - Graph: Soft incremental bounds constraints now imposed to all new and old nodes positioning. - Prepping into the next development cycle (with Qt >= 6.5). Website: https://qjackctl.sourceforge.io http://qjackctl.sourceforge.net Project page: https://sourceforge.net/projects/qjackctl Downloads: https://sourceforge.net/projects/qjackctl/files - source tarball: https://download.sf.net/qjackctl/qjackctl-0.9.11.tar.gz - source package: https://download.sf.net/qjackctl/qjackctl-0.9.11-55.1.rncbc.suse.src.rpm - binary packages: https://download.sf.net/qjackctl/qjackctl-0.9.11-55.1.rncbc.suse.x86_64.rpm - AppImage [20] package: https://download.sf.net/qjackctl/qjackctl-0.9.11-55.1.x86_64.AppImage Git repos: https://git.code.sf.net/p/qjackctl/code https://github.com/rncbc/qjackctl.git https://gitlab.com/rncbc/qjackctl.git https://codeberg.com/rncbc/qjackctl.git ** Qsynth - A FluidSynth Qt GUI Interface [2] ** Qsynth 0.9.11 (spring'23) released! Qsynth is a FluidSynth [10] GUI front-end application written in C++ around the Qt framework [7] using Qt Designer. Change-log: - Optimized audio output peak-meters. - Prepping into the next development cycle (with Qt >= 6.5). Website: https://qsynth.sourceforge.io http://qsynth.sourceforge.net Project page: https://sourceforge.net/projects/qsynth Downloads: https://sourceforge.net/projects/qsynth/files - source tarball: https://download.sf.net/qsynth/qsynth-0.9.11.tar.gz - source package: https://download.sf.net/qsynth/qsynth-0.9.11-55.1.rncbc.suse.src.rpm - binary packages: https://download.sf.net/qsynth/qsynth-0.9.11-55.1.rncbc.suse.x86_64.rpm - AppImage [20] package: https://download.sf.net/qsynth/qsynth-0.9.11-55.1.x86_64.AppImage - Flatpak [21] package (thanks to Pedro Lopez-Cabanillas): https://flathub.org/apps/details/org.rncbc.qsynth Git repos: https://git.code.sf.net/p/qsynth/code https://github.com/rncbc/qsynth.git https://gitlab.com/rncbc/qsynth.git https://codeberg.com/rncbc/qsynth.git ** Qsampler - A LinuxSampler Qt GUI Interface [3] ** Qsampler 0.9.10 (spring'23) released! Qsampler is a LinuxSampler [11] GUI front-end application written in C++ around the Qt framework [7] using Qt Designer. Change-log: - Bumping copyright headers to the brand new year. Website: https://qsampler.sourceforge.io http://qsampler.sourceforge.net Project page: https://sourceforge.net/projects/qsampler Downloads: https://sourceforge.net/projects/qsampler/files - source tarballs: https://download.sf.net/qsampler/qsampler-0.9.10.tar.gz https://download.sf.net/qsampler/liblscp-0.9.10.tar.gz - source packages: https://download.sf.net/qsampler/qsampler-0.9.10-54.1.rncbc.suse.src.rpm https://download.sf.net/qsampler/liblscp-0.9.10-54.1.rncbc.suse.src.rpm - binary packages: https://download.sf.net/qsampler/qsampler-0.9.10-54.1.rncbc.suse.x86_64.rpm https://download.sf.net/qsampler/liblscp6-0.9.10-54.1.rncbc.suse.x86_64.rpm https://download.sf.net/qsampler/liblscp-devel-0.9.10-54.1.rncbc.suse.x86_64.rpm - AppImage [20] package: https://download.sf.net/qsampler/qsampler-0.9.10-54.1.x86_64.AppImage Git repos: https://git.code.sf.net/p/qsampler/code https://github.com/rncbc/qsampler.git https://gitlab.com/rncbc/qsampler.git https://codeberg.com/rncbc/qsampler.git https://git.code.sf.net/p/qsampler/liblscp https://github.com/rncbc/liblscp.git https://gitlab.com/rncbc/liblscp.git https://codeberg.com/rncbc/liblscp.git ** QXGEdit - A Qt XG Editor [4] ** QXGEdit 0.9.10 (spring'23) released! QXGEdit is a live XG instrument editor, specialized on editing MIDI System Exclusive files (.syx) for the Yamaha DB50XG [14] and thus probably a baseline for many other XG devices. Change-log: - Micro-adjustments to the View > Options... dialog layout. - Prepping into the next development cycle (with Qt >= 6.5). Website: https://qxgedit.sourceforge.io http://qxgedit.sourceforge.net Project page: https://sourceforge.net/projects/qxgedit Downloads: https://sourceforge.net/projects/qxgedit/files - source tarball: https://download.sf.net/qxgedit/qxgedit-0.9.10.tar.gz - source package: https://download.sf.net/qxgedit/qxgedit-0.9.10-54.1.rncbc.suse.src.rpm - binary packages: https://download.sf.net/qxgedit/qxgedit-0.9.10-54.1.rncbc.suse.x86_64.rpm - AppImage [20] package: https://download.sf.net/qxgedit/qxgedit-0.9.10-54.1.x86_64.AppImage Git repos: https://git.code.sf.net/p/qxgedit/code https://github.com/rncbc/qxgedit.git https://gitlab.com/rncbc/qxgedit.git https://codeberg.com/rncbc/qxgedit.git ** QmidiCtl - A MIDI Remote Controller via UDP/IP Multicast [5] ** QmidiCtl 0.9.10 (spring'23) released! QmidiCtl [5] is a MIDI remote controller application that sends MIDI data over the network, using UDP/IP multicast. Inspired by multimidicast [15] and designed to be compatible with ipMIDI [15] for Windows. QmidiCtl [5] was long ago designed for the Maemo [17] enabled handheld devices, namely the late Nokia N900 [18] and promoted to the Maemo Package [18] repositories. Nevertheless, QmidiCtl [5] may still be found effective as a regular desktop application and recently as an Android application as well. Change-log: - Prepping into the next development cycle (with Qt >= 6.5). Website: https://qmidictl.sourceforge.io http://qmidictl.sourceforge.net Project page: https://sourceforge.net/projects/qmidictl Downloads: https://sourceforge.net/projects/qmidictl/files - source tarball: https://download.sf.net/qmidictl/qmidictl-0.9.10.tar.gz - source package: https://download.sf.net/qmidictl/qmidictl-0.9.10-54.1.rncbc.suse.src.rpm - binary packages: https://download.sf.net/qmidictl/qmidictl-0.9.10-54.1.rncbc.suse.x86_64.rpm - AppImage [20] package: https://download.sf.net/qmidictl/qmidictl-0.9.10-54.1.x86_64.AppImage - Android packages: https://download.sf.net/qmidictl/qmidictl-0.9.10-54.1.arm64-v8a.apk https://download.sf.net/qmidictl/qmidictl-0.9.10-54.1.x86_64.apk https://play.google.com/store/apps/details?id=org.rncbc.qmidictl Git repos: https://git.code.sf.net/p/qmidictl/code https://github.com/rncbc/qmidictl.git https://gitlab.com/rncbc/qmidictl.git https://codeberg.com/rncbc/qmidictl.git ** QmidiNet - A MIDI Network Gateway via UDP/IP Multicast [6] ** QmidiNet 0.9.10 (spring'23) released! QmidiNet is a MIDI network gateway application that sends and receives MIDI data (ALSA-MIDI [9] and JACK-MIDI [8]) over the network, using UDP/IP multicast. Inspired by multimidicast [15] and designed to be compatible with ipMIDI [16] for Windows. Change-log: - Fixed lost or out of order messages on JACK-MIDI client. - Prepping into the next development cycle (with Qt >= 6.5). Website: https://qmidinet.sourceforge.io http://qmidinet.sourceforge.net Project page: https://sourceforge.net/projects/qmidinet Downloads: https://sourceforge.net/projects/qmidinet/files - source tarball: https://download.sf.net/qmidinet/qmidinet-0.9.10.tar.gz - source package: https://download.sf.net/qmidinet/qmidinet-0.9.10-54.1.rncbc.suse.src.rpm - binary packages: https://download.sf.net/qmidinet/qmidinet-0.9.10-54.1.rncbc.suse.x86_64.rpm - AppImage [20] package: https://download.sf.net/qmidinet/qmidinet-0.9.10-54.1.x86_64.AppImage Git repos: https://git.code.sf.net/p/qmidinet/code https://github.com/rncbc/qmidinet.git https://gitlab.com/rncbc/qmidinet.git https://codeberg.com/rncbc/qmidinet.git -- License: All of the Qstuff* are free, open-source Linux Audio [11] software, distributed under the terms of the GNU General Public License (GPL) version 2 or later [12]. References: [1] QjackCtl - A JACK Audio Connection Kit Qt GUI Interface https://qjackctl.sourceforge.io [2] Qsynth - A fluidsynth Qt GUI Interface https://qsynth.sourceforge.io [3] Qsampler - A LinuxSampler Qt GUI Interface https://qsampler.sourceforge.io [4] QXGEdit - A Qt XG Editor https://qxgedit.sourceforge.io [5] QmidiCtl - A MIDI Remote Controller via UDP/IP Multicast https://qmidictl.sourceforge.io [6] QmidiNet - A MIDI Network Gateway via UDP/IP Multicast https://qmidinet.sourceforge.io [7] Qt framework, C++ class library and tools for cross-platform application and UI development https://qt.io/ [8] JACK Audio Connection Kit https://jackaudio.org [9] ALSA, Advanced Linux Sound Architecture https://www.alsa-project.org/ [10] FluidSynth - A SoundFont Synthesizer A real-time software synthesizer based on SoundFont 2 specifications https://www.fluidsynth.org [11] LinuxSampler - The Linux Sampler Project A modular, streaming capable, realtime audio sampler https://www.linuxsampler.org [12] Linux Audio consortium of libre software for audio-related work https://linuxaudio.org [13] GPL - GNU General Public License https://www.gnu.org/copyleft/gpl.html [14] Yamaha DB50XG (https://web.archive.org/web/20150607065739/) http://www.soundonsound.com/sos/1996_articles/may96/yamahadb50xg.html [15] multimidicast - sends and receives MIDI from ALSA sequencers over network https://llg.cubic.org/tools/multimidicast [16] ipMIDI - MIDI over Ethernet ports - send MIDI over your LAN https://nerds.de [17] Maemo.org - Home of the Maemo community https://www.maemo.org [18] Maemo.org Wiki - Nokia N900 https://wiki.maemo.org/Nokia_N900 [19] Maemo.org - Downloads: QmidiCtl https://maemo.org/downloads/product/Maemo5/qmidictl [20] AppImage, Linux apps that run anywhere https://appimage.org/ [21] Flatpak, next-generation technology for building and distributing desktop applications on Linux https://flatpak.org/ See also: https://www.rncbc.org/drupal/node/2439 See you all soon! -- rncbc aka Rui Nuno Capela |