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
(9) |
Dec
|
|
From: Christian S. <sch...@li...> - 2021-08-26 14:07:45
|
On Mittwoch, 25. August 2021 12:26:38 CEST Kolja Koch wrote: > Hello all, > > I played around a little bit with the wav2gig tool, in order to get > samples extracted by akaiextract into a gig-file. > Currently, wav2gig only supports a hard coded naming convention for the > wav-files in order to get the information needed for the import > process. > > - Are there any plans to integrate the import-process into gigedit? In libgig there is already a quite a collection of individual command line tools. The plan is to first make these already existing tools available through a convenient API accessible from the libgig DLL itself. I've already started work on this on libgig side (not committed yet). As a next step GUI applications like GigEdit would be extended to call those libgig functions to offer the respective tools like conversions, integrity checks, and so forth. This could obviously then also be used by other GUI apps. > If so, we could present the user with an interface similar to the "Fill > Tag" scanner in eastag: > http://src.gnu-darwin.org/ports/audio/easytag/work/easytag-2.1/doc/EasyTAG_D > ocumentation.html#vh_1_2_2 Note: Any characters in the filename that should > be ignored can be entered directly and work like a delimiter, just like the > " - " in the example. wav2gig.cpp already uses regular expressions (RegEx) to extract info from the individual file names. These RegEx patterns are currently hard coded in wav2gig.cpp, but the plan was to use them just as default RegEx patterns and allowing to override them individually with custom RegEx patterns from the command line if needed. While the template format in EasyTag is easier to understand, it is also much more limited than RegEx patterns. Regular expressions are a common standard for text parsing tasks across all programming languages, including shell scripts. > Disadvantage is, that this will only work, if there are indeed > delimiters. In my case, the filenames look like this: > 'STFLSF 5 L.wav' > where > 'ST' is the instrument, > 'FLS' the articulation and > 'F 5' is the note 'F#5'. > The 'L' stands for 'left', as there is also a file for the right > channel. > > Unfortunately, there is also > 'STFLSF5 L.wav' > where 'F5' is the note 'F5'. > Theoretically, there could also be a 'F -1' (= 'F#-1'). > > I know, we cannot cover any name-scheme one might (not) think of, but > as you can see, the only 'dynamic' part of the filename in my case is > the note-name, so using the 'easytag'-scanner I could enter > 'STFLS%n ' > where %n would refer to the note-name. Yeah, but RegEx patterns can handle all of them, and also much more complicated file name scenarios beyond that. I highly recommend you to readup on RegEx patterns, as this is a highly valueable knowledge for any programmer, even if you are just writing shell scripts. There are also plenty of sites online that allow you to toy arround live with RegEx patterns and arbitrary input, with coloured visual diagnostics how the example input text was exactly tokenized, syntax help and much more. [...] > I'm willing to participate on this, though my programming-skills are > those of a layman... ;) Well, in this particular case, all you need is inside wav2gig.cpp, which is a quite simple and small source file. It should not be too difficult to understand and adjust this code, even for beginners. CU Christian |
|
From: Kolja K. <ko...@fr...> - 2021-08-25 10:44:56
|
Hello all, I played around a little bit with the wav2gig tool, in order to get samples extracted by akaiextract into a gig-file. Currently, wav2gig only supports a hard coded naming convention for the wav-files in order to get the information needed for the import process. - Are there any plans to integrate the import-process into gigedit? If so, we could present the user with an interface similar to the "Fill Tag" scanner in eastag: http://src.gnu-darwin.org/ports/audio/easytag/work/easytag-2.1/doc/EasyTAG_Documentation.html#vh_1_2_2 Note: Any characters in the filename that should be ignored can be entered directly and work like a delimiter, just like the " - " in the example. Disadvantage is, that this will only work, if there are indeed delimiters. In my case, the filenames look like this: 'STFLSF 5 L.wav' where 'ST' is the instrument, 'FLS' the articulation and 'F 5' is the note 'F#5'. The 'L' stands for 'left', as there is also a file for the right channel. Unfortunately, there is also 'STFLSF5 L.wav' where 'F5' is the note 'F5'. Theoretically, there could also be a 'F -1' (= 'F#-1'). I know, we cannot cover any name-scheme one might (not) think of, but as you can see, the only 'dynamic' part of the filename in my case is the note-name, so using the 'easytag'-scanner I could enter 'STFLS%n ' where %n would refer to the note-name. Missing paramters: - The notenumber could be extracted by investigating the notename - the sign-charater(s) should be entered (' ' in my case, might be '#', 'sharp', 'flat', 'is' or whatever). - 'name' (and name2) could be entered as a static value and eventually used for auto-generating the gig-filename. - velocity_nr could in my case also be entered as a static value (default = 64 or 127?) Exception to the given scheme that might occur during the import- process might have to be dealt with individually: ignore file (ignore all exceptions), abort import. Sidenote: With my filenames, it looks like they have a fixed length with each index with a fixed meaning. Another filename-scheme from my list: 'T1FTG2 AIF L.wav' index 0 to 1: name index 2 to 3: name2 index 4 to 6: note-name index 7 to 10: ??? index 11 : pan So this could lead to a different 'fixed-width' approach. Of course, this all could be implemented as commandline options to wav2gig, or maybe with a switch that will lead to an interactive 'shell': - Show the first found wav-filename - The user enters the name-scheme - The user enters missing information from the name-scheme as static values I'm willing to participate on this, though my programming-skills are those of a layman... ;) Cheers, Kolja |
|
From: Christian S. <sch...@li...> - 2021-05-14 09:22:00
|
On Donnerstag, 13. Mai 2021 22:20:26 CEST Barry Jackson wrote: > On 13/05/2021 18:23, Christian Schoenebeck wrote: > > Already filed: > > https://bugs.linuxsampler.org/cgi-bin/show_bug.cgi?id=193 > > > > I think some people are using a std lib call to generate a time stamp > > instead, which is not real-time safe though. A CPU/asm solution for > > generating the time stamp would be better. > > That bug is over 6 years old! > > So for now we just drop gig/linuxsampler/gigedit from all arm builds I > guess. Makes sense. > Is a solution being worked on? Not that I know of. The way to go is to read out the cpu cycle register, which is the fastest solution and real-time safe. The other asm code mentioned should already been taken care of. Best regards, Christian Schoenebeck |
|
From: Barry J. <zen...@ze...> - 2021-05-13 20:20:42
|
On 13/05/2021 18:23, Christian Schoenebeck wrote: > Already filed: > https://bugs.linuxsampler.org/cgi-bin/show_bug.cgi?id=193 > > I think some people are using a std lib call to generate a time stamp instead, > which is not real-time safe though. A CPU/asm solution for generating the time > stamp would be better. > That bug is over 6 years old! So for now we just drop gig/linuxsampler/gigedit from all arm builds I guess. Is a solution being worked on? Regards, Barry |
|
From: Christian S. <sch...@li...> - 2021-05-13 17:23:52
|
On Donnerstag, 13. Mai 2021 18:23:49 CEST Barry Jackson wrote: > Relevant lines from build log: > ------------------------------- > libtool: compile: g++ -std=gnu++14 -DHAVE_CONFIG_H -I. -I../.. > -Wreturn-type -ffast-math -O2 -g -pipe -Wformat -Werror=format-security > -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 > -fasynchronous-unwind-tables -pthread -c RTMath.cpp -fPIC -DPIC -o > .libs/RTMath.o > RTMath.cpp:83:8: error: #error "Sorry, LinuxSampler lacks time stamp > code for your system." > 83 | # error "Sorry, LinuxSampler lacks time stamp code for > your system." > > | ^~~~~ Already filed: https://bugs.linuxsampler.org/cgi-bin/show_bug.cgi?id=193 I think some people are using a std lib call to generate a time stamp instead, which is not real-time safe though. A CPU/asm solution for generating the time stamp would be better. Best regards, Christian Schoenebeck |
|
From: Barry J. <zen...@ze...> - 2021-05-13 16:37:00
|
On 13/05/2021 17:23, Barry Jackson wrote: > Not certain which build machine was used but one is Amazon Graviton 2 > and the others are older Graviton. It was the Graviton 2 on further investigation. |
|
From: Barry J. <zen...@ze...> - 2021-05-13 16:24:01
|
Relevant lines from build log:
-------------------------------
libtool: compile: g++ -std=gnu++14 -DHAVE_CONFIG_H -I. -I../..
-Wreturn-type -ffast-math -O2 -g -pipe -Wformat -Werror=format-security
-Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4
-fasynchronous-unwind-tables -pthread -c RTMath.cpp -fPIC -DPIC -o
.libs/RTMath.o
RTMath.cpp:83:8: error: #error "Sorry, LinuxSampler lacks time stamp
code for your system."
83 | # error "Sorry, LinuxSampler lacks time stamp code for
your system."
| ^~~~~
RTMath.cpp:84:8: error: #error "Please report this error and the CPU you
are using to the LinuxSampler developers mailing list!"
84 | # error "Please report this error and the CPU you are
using to the LinuxSampler developers mailing list!"
| ^~~~~
In file included from RTMath.h:29,
from RTMath.cpp:24:
global_private.h:99:40: warning: dynamic exception specifications are
deprecated in C++11 [-Wdeprecated]
99 | inline int ToInt(const std::string& s)
throw(LinuxSampler::Exception) {
| ^~~~~
global_private.h:106:44: warning: dynamic exception specifications are
deprecated in C++11 [-Wdeprecated]
106 | inline float ToFloat(const std::string& s)
throw(LinuxSampler::Exception) {
| ^~~~~
RTMath.cpp: In static member function 'static RTMathBase::time_stamp_t
RTMathBase::CreateTimeStamp()':
RTMath.cpp:86:1: warning: no return statement in function returning
non-void [-Wreturn-type]
86 | }
| ^
make[3]: *** [Makefile:558: RTMath.lo] Error 1
-----------------------------------------------
We have two patches applied:
linuxsampler-2.1-mga-arm_RTMath.cpp.patch
linuxsampler-2.1-mga-arm_atomic.h.patch
Not certain which build machine was used but one is Amazon Graviton 2
and the others are older Graviton.
Any help appreciated.
Thanks,
Barry Jackson
|
|
From: Rui N. C. <rn...@rn...> - 2021-05-11 17:49:09
|
Hi everybody, The first batch of the so called 'QStuff*' is springing out: QjackCtl [1], Qsynth [2], Qsampler [3], QXGEdit [4], QmidiCtl [5] and QmidiNet [6], all bumping to **version 0.9.3** for the (northern) Spring'21 season, rejoice! ** QjackCtl - JACK Audio Connection Kit Qt GUI Interface [1] ** QjackCtl 0.9.3 (spring'21) is 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. 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.3.tar.gz - source package: https://download.sf.net/qjackctl/qjackctl-0.9.3-47.rncbc.suse.src.rpm - binary packages: https://download.sf.net/qjackctl/qjackctl-0.9.3-47.rncbc.suse.x86_64.rpm - AppImage [20] package: https://download.sf.net/qjackctl/qjackctl-0.9.3-47.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://bitbucket.com/rncbc/qjackctl.git Change-log: - Graph connection lines drop-shadow eye-candy has been optimized, improving a lot on moving highly-connected nodes, especially the ones with plenty of backward-curved connections. - All packaging builds switching to CMake. [21] - Fixed default preset/aliases switching and reloading when entering pure-client mode (ie. "Active" status). ** Qsynth - A fluidsynth Qt GUI Interface [2] ** Qsynth 0.9.3 (spring'21) is released! Qsynth is a FluidSynth [10] GUI front-end application written in C++ around the Qt framework [7] using Qt Designer. 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.3.tar.gz - source package: https://download.sf.net/qsynth/qsynth-0.9.3-47.rncbc.suse.src.rpm - binary packages: https://download.sf.net/qsynth/qsynth-0.9.3-47.rncbc.suse.x86_64.rpm - AppImage [20] package: https://download.sf.net/qsynth/qsynth-0.9.3-47.x86_64.AppImage - Win64 and macOS packages (thanks again to Pedro Lopez-Cabanillas): https://download.sf.net/qsynth/qsynth-0.9.3-47.win-x64-setup.exe https://download.sf.net/qsynth/qsynth-0.9.3-47.mac-x64.dmg Git repos: https://git.code.sf.net/p/qsynth/code https://github.com/rncbc/qsynth.git https://gitlab.com/rncbc/qsynth.git https://bitbucket.com/rncbc/qsynth.git Change-log: - New Setup/Audio/WASAPI Exclusive Mode option added. - Fix for Windows runtime error (assertion failed) when compiled with MSVC (by Pedro Lopez-Cabanillas). - New Setup/MIDI/Auto Connect MIDI inputs option added. - Fix deprecated Reverb/Chorus API (FluidSynth >= 2.2.0). - All packaging builds switching to CMake. [21] ** Qsampler - A LinuxSampler Qt GUI Interface [3] ** Qsampler 0.9.3 (spring'21) is released! Qsampler is a LinuxSampler [11] GUI front-end application written in C++ around the Qt framework [7] using Qt Designer. 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.3.tar.gz https://download.sf.net/qsampler/liblscp-0.9.3.tar.gz - source packages: https://download.sf.net/qsampler/qsampler-0.9.3-47.rncbc.suse.src.rpm https://download.sf.net/qsampler/liblscp-0.9.3-47.rncbc.suse.src.rpm - binary packages: https://download.sf.net/qsampler/qsampler-0.9.3-47.rncbc.suse.x86_64.rpm https://download.sf.net/qsampler/liblscp6-0.9.3-47.rncbc.suse.x86_64.rpm https://download.sf.net/qsampler/liblscp-devel-0.9.3-47.rncbc.suse.x86_64.rpm - AppImage [20] package: https://download.sf.net/qsampler/qsampler-0.9.3-47.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://bitbucket.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://bitbucket.com/rncbc/liblscp.git Change-log: - All packaging builds switching to CMake. [21] ** QXGEdit - A Qt XG Editor [4] ** QXGEdit 0.9.3 (spring'21) is 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. 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.3.tar.gz - source package: https://download.sf.net/qxgedit/qxgedit-0.9.3-37.rncbc.suse.src.rpm - binary packages: https://download.sf.net/qxgedit/qxgedit-0.9.3-37.rncbc.suse.x86_64.rpm - AppImage [20] package: https://download.sf.net/qxgedit/qxgedit-0.9.3-37.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://bitbucket.com/rncbc/qxgedit.git Change-log: - All packaging builds switching to CMake. [21] ** QmidiCtl - A MIDI Remote Controller via UDP/IP Multicast [5] ** QmidiCtl 0.9.3 (spring'21) is 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. 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.3.tar.gz - source package: https://download.sf.net/qmidictl/qmidictl-0.9.3-27.rncbc.suse.src.rpm - binary packages: https://download.sf.net/qmidictl/qmidictl-0.9.3-27.rncbc.suse.x86_64.rpm - AppImage [20] package: https://download.sf.net/qmidictl/qmidictl-0.9.3-27.x86_64.AppImage - Android package: https://download.sf.net/qmidictl/qmidictl-0.9.3-27.aab 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://bitbucket.com/rncbc/qmidictl.git Change-log: - All packaging builds switching to CMake. [21] ** QmidiNet - A MIDI Network Gateway via UDP/IP Multicast [6] ** QmidiNet 0.9.3 (spring'21) is 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. 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.3.tar.gz - source package: https://download.sf.net/qmidinet/qmidinet-0.9.3-27.rncbc.suse.src.rpm - binary packages: https://download.sf.net/qmidinet/qmidinet-0.9.3-27.rncbc.suse.x86_64.rpm - AppImage [20] package: https://download.sf.net/qmidinet/qmidinet-0.9.3-27.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://bitbucket.com/rncbc/qmidinet.git Change-log: - All packaging builds switching to CMake. [21] 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] CMake, a cross-platform, open-source build system generator https://cmake.org See also: https://www.rncbc.org/drupal/node/2224 Keep having fun && stay healthy, always! -- rncbc aka Rui Nuno Capela |
|
From: Christian S. <sch...@li...> - 2021-05-09 19:20:34
|
Hi everyone, a new release had been rolled out today: o LinuxSampler 2.2.0 o Gigedit 1.2.0 o libgig 4.3.0 Many new features, even more fixes, and many words and screen shots for you to read and watch in the release notes: http://doc.linuxsampler.org/Release_Notes/LinuxSampler_2_2_0/ Best regards, Christian Schoenebeck |
|
From: Christian S. <sch...@li...> - 2021-04-21 14:15:53
|
On Dienstag, 20. April 2021 11:18:36 CEST Jan Flikweert wrote: > Hi, > > I attached two script files. The file corrincl18th.lscp is the result one > track with the LS plugin with 16 instruments and a second track with again > LS plugin instrument 17+18. > > Kind regards, > > Jan Flikweert [snip] > ADD CHANNEL > SET CHANNEL MIDI_INPUT_DEVICE 14 0 > SET CHANNEL MIDI_INPUT_PORT 14 0 > SET CHANNEL MIDI_INPUT_CHANNEL 14 14 > LOAD ENGINE GIG 14 > SET CHANNEL VOLUME 14 1.0 > SET CHANNEL MIDI_INSTRUMENT_MAP 14 NONE > SET CHANNEL AUDIO_OUTPUT_DEVICE 14 0 > LOAD INSTRUMENT NON_MODAL 'D:/Domus\x20gig/Nov2016mono/kromhoorn8.gig' 0 14 > > > ADD CHANNEL > SET CHANNEL MIDI_INPUT_DEVICE 15 0 > SET CHANNEL MIDI_INPUT_PORT 15 0 > SET CHANNEL MIDI_INPUT_CHANNEL 15 15 > LOAD ENGINE GIG 15 > SET CHANNEL VOLUME 15 1.0 > SET CHANNEL MIDI_INSTRUMENT_MAP 15 NONE > SET CHANNEL AUDIO_OUTPUT_DEVICE 15 0 > LOAD INSTRUMENT NON_MODAL 'D:/Domus\x20gig/Nov2016mono/Bourdon32.gig' 0 15 > > > ADD CHANNEL > SET CHANNEL MIDI_INPUT_DEVICE 16 1 So it sets this one to MIDI channel 2 for some, unlike the other ones ... > SET CHANNEL MIDI_INPUT_PORT 16 0 > SET CHANNEL MIDI_INPUT_CHANNEL 16 0 > LOAD ENGINE GIG 16 > SET CHANNEL VOLUME 16 1.0 > SET CHANNEL MIDI_INSTRUMENT_MAP 16 NONE > SET CHANNEL AUDIO_OUTPUT_DEVICE 16 1 > LOAD INSTRUMENT NON_MODAL 'D:/Domus\x20gig/Nov2016mono/Gedekt8.gig' 0 16 ... and sets this to a 2nd VST audio output device ... > > > ADD CHANNEL > SET CHANNEL MIDI_INPUT_DEVICE 17 0 > SET CHANNEL MIDI_INPUT_PORT 17 0 > SET CHANNEL MIDI_INPUT_CHANNEL 17 0 > LOAD ENGINE GIG 17 > SET CHANNEL VOLUME 17 1.0 > SET CHANNEL MIDI_INSTRUMENT_MAP 17 NONE > SET CHANNEL AUDIO_OUTPUT_DEVICE 17 0 > LOAD INSTRUMENT NON_MODAL 'D:/Domus\x20gig/Nov2016mono/Larigot.gig' 0 17 ... and the rest back to the 1sts VST audio output device. Anyway, it's been a while that I used exactly the VST plugin and I have not written this particular plugin code. The VST version of LS is a bit different than the other plugin types (AU, DSSI, LV2) of LS. If you look at src/hostplugins/vst/PluginVst.cpp you see right at the beginning of the source file that there is a hard coded amount of exactly 32 audio output channels for the VST plugin. So I think the idea was that one LS VST plugin instance can serve up to (32 / 2 = ) 16 tracks. And if you need more DAW tracks than that you would create a 2nd VST plugin device I think. >From what I can remember there are 2 ways in Cubase to instantiate the VST plugin. You can either spawn it directly from a track, or rather from Cubase's main menu there is a menu entry "VST Devices". And I think I always created the LS VST plugin device in Cubase manually by the latter first and then I started creating tracks and assigned them to that LS VST plugin device (all within Cubase that is). I remember there were discussions about this VST plugin topic before, i.e. somebody who raised the hard coded amount in PluginVst.cpp source file. You might find those discussions by searching the mailing list archive. You might try to ask Andreas if he can add more to this topic. For instance I can't remember the background why this design with exactly 32 audio channels was chosen, was this maybe a limitation of the VST standard or just some initial starting point for the LS VST plugin implementation? I simply don't know. The VST plugin deserves some dedusting, but right now I don't have the time to test and debug the VST implementation, as I don't even have Cubase or another VST capable DAW app installed. But if somebody needs help on the code or debugging, I try to help where I can. CU Christian |
|
From: Jan F. <fl...@ze...> - 2021-04-20 09:20:53
|
Hi, Another situation is that creating one track with the Linuxsampler plugin allows the user to add more than 16 instruments. Attached the result from that action. Kind regards, Jan Flikweert -----Original Message----- From: Christian Schoenebeck [mailto:sch...@li...] Sent: maandag 19 april 2021 19:22 To: lin...@li... Cc: Jan Flikweert Subject: Re: [Linuxsampler-devel] Documentation how to use Linuxsampler plugin? On Samstag, 17. April 2021 14:28:56 CEST Jan Flikweert wrote: > Hi! > > Here the answer to your questions what it does after the 17th. Instrument. I > also included the 18th. Because after 17th instrument everything is set to > midi device 0 port 0. It is not allowed to change this manually. > > ----------------- > The answer to your question: > > CREATE MIDI_INPUT_DEVICE Plugin > SET MIDI_INPUT_PORT_PARAMETER 0 0 NAME='Port 0' > > CREATE MIDI_INPUT_DEVICE Plugin > SET MIDI_INPUT_PORT_PARAMETER 1 0 NAME='Port 0' > > CREATE AUDIO_OUTPUT_DEVICE Plugin ACTIVE=true CHANNELS=32 SAMPLERATE=44100 > FRAGMENTSIZE=1024 > ADD CHANNEL > SET CHANNEL MIDI_INPUT_DEVICE 16 1 > SET CHANNEL MIDI_INPUT_PORT 16 0 > SET CHANNEL MIDI_INPUT_CHANNEL 16 0 > LOAD ENGINE GIG 16 > SET CHANNEL VOLUME 16 1.0 > SET CHANNEL MIDI_INSTRUMENT_MAP 16 NONE > SET CHANNEL AUDIO_OUTPUT_DEVICE 16 1 > LOAD INSTRUMENT NON_MODAL 'D:/Domus\x20gig/Nov2016mono/Gedekt8.gig' 0 16 > > > ADD CHANNEL > SET CHANNEL MIDI_INPUT_DEVICE 17 0 > SET CHANNEL MIDI_INPUT_PORT 17 0 > SET CHANNEL MIDI_INPUT_CHANNEL 17 0 > LOAD ENGINE GIG 17 > SET CHANNEL VOLUME 17 1.0 > SET CHANNEL MIDI_INSTRUMENT_MAP 17 NONE > SET CHANNEL AUDIO_OUTPUT_DEVICE 17 0 > LOAD INSTRUMENT NON_MODAL 'D:/Domus\x20gig/Nov2016mono/Larigot.gig' 0 17 > ----------------- Could you please dump the entire sampler session from part 1 to part 18? CU Christian |
|
From: Jan F. <fl...@ze...> - 2021-04-20 09:18:54
|
Hi, I attached two script files. The file corrincl18th.lscp is the result one track with the LS plugin with 16 instruments and a second track with again LS plugin instrument 17+18. Kind regards, Jan Flikweert -----Original Message----- From: Christian Schoenebeck [mailto:sch...@li...] Sent: maandag 19 april 2021 19:22 To: lin...@li... Cc: Jan Flikweert Subject: Re: [Linuxsampler-devel] Documentation how to use Linuxsampler plugin? On Samstag, 17. April 2021 14:28:56 CEST Jan Flikweert wrote: > Hi! > > Here the answer to your questions what it does after the 17th. Instrument. I > also included the 18th. Because after 17th instrument everything is set to > midi device 0 port 0. It is not allowed to change this manually. > > ----------------- > The answer to your question: > > CREATE MIDI_INPUT_DEVICE Plugin > SET MIDI_INPUT_PORT_PARAMETER 0 0 NAME='Port 0' > > CREATE MIDI_INPUT_DEVICE Plugin > SET MIDI_INPUT_PORT_PARAMETER 1 0 NAME='Port 0' > > CREATE AUDIO_OUTPUT_DEVICE Plugin ACTIVE=true CHANNELS=32 SAMPLERATE=44100 > FRAGMENTSIZE=1024 > ADD CHANNEL > SET CHANNEL MIDI_INPUT_DEVICE 16 1 > SET CHANNEL MIDI_INPUT_PORT 16 0 > SET CHANNEL MIDI_INPUT_CHANNEL 16 0 > LOAD ENGINE GIG 16 > SET CHANNEL VOLUME 16 1.0 > SET CHANNEL MIDI_INSTRUMENT_MAP 16 NONE > SET CHANNEL AUDIO_OUTPUT_DEVICE 16 1 > LOAD INSTRUMENT NON_MODAL 'D:/Domus\x20gig/Nov2016mono/Gedekt8.gig' 0 16 > > > ADD CHANNEL > SET CHANNEL MIDI_INPUT_DEVICE 17 0 > SET CHANNEL MIDI_INPUT_PORT 17 0 > SET CHANNEL MIDI_INPUT_CHANNEL 17 0 > LOAD ENGINE GIG 17 > SET CHANNEL VOLUME 17 1.0 > SET CHANNEL MIDI_INSTRUMENT_MAP 17 NONE > SET CHANNEL AUDIO_OUTPUT_DEVICE 17 0 > LOAD INSTRUMENT NON_MODAL 'D:/Domus\x20gig/Nov2016mono/Larigot.gig' 0 17 > ----------------- Could you please dump the entire sampler session from part 1 to part 18? CU Christian |
|
From: Christian S. <sch...@li...> - 2021-04-19 17:21:55
|
On Samstag, 17. April 2021 14:28:56 CEST Jan Flikweert wrote: > Hi! > > Here the answer to your questions what it does after the 17th. Instrument. I > also included the 18th. Because after 17th instrument everything is set to > midi device 0 port 0. It is not allowed to change this manually. > > ----------------- > The answer to your question: > > CREATE MIDI_INPUT_DEVICE Plugin > SET MIDI_INPUT_PORT_PARAMETER 0 0 NAME='Port 0' > > CREATE MIDI_INPUT_DEVICE Plugin > SET MIDI_INPUT_PORT_PARAMETER 1 0 NAME='Port 0' > > CREATE AUDIO_OUTPUT_DEVICE Plugin ACTIVE=true CHANNELS=32 SAMPLERATE=44100 > FRAGMENTSIZE=1024 > ADD CHANNEL > SET CHANNEL MIDI_INPUT_DEVICE 16 1 > SET CHANNEL MIDI_INPUT_PORT 16 0 > SET CHANNEL MIDI_INPUT_CHANNEL 16 0 > LOAD ENGINE GIG 16 > SET CHANNEL VOLUME 16 1.0 > SET CHANNEL MIDI_INSTRUMENT_MAP 16 NONE > SET CHANNEL AUDIO_OUTPUT_DEVICE 16 1 > LOAD INSTRUMENT NON_MODAL 'D:/Domus\x20gig/Nov2016mono/Gedekt8.gig' 0 16 > > > ADD CHANNEL > SET CHANNEL MIDI_INPUT_DEVICE 17 0 > SET CHANNEL MIDI_INPUT_PORT 17 0 > SET CHANNEL MIDI_INPUT_CHANNEL 17 0 > LOAD ENGINE GIG 17 > SET CHANNEL VOLUME 17 1.0 > SET CHANNEL MIDI_INSTRUMENT_MAP 17 NONE > SET CHANNEL AUDIO_OUTPUT_DEVICE 17 0 > LOAD INSTRUMENT NON_MODAL 'D:/Domus\x20gig/Nov2016mono/Larigot.gig' 0 17 > ----------------- Could you please dump the entire sampler session from part 1 to part 18? CU Christian |
|
From: Jan F. <fl...@ze...> - 2021-04-17 12:34:16
|
Hi, I used in REAPER : 1.Insert instrument on new track 2. Assigned 32 audio channels which is 16 midi channels 3. Assigned for each midi channel a track to it. After 16 instruments I go back to step 1. Kind regards, Jan Flikweert -----Original Message----- From: Christian Schoenebeck [mailto:sch...@li...] Sent: zaterdag 17 april 2021 10:10 To: lin...@li... Cc: Jan Flikweert Subject: Re: [Linuxsampler-devel] Documentation how to use Linuxsampler plugin? On Freitag, 16. April 2021 09:17:29 CEST Jan Flikweert wrote: > Hi all, Hi! > Does anyone know how to use the Linuxsampler's VST instrument plugin > generally and special in REAPER. Is there any documentation to read? So far nobody has written a documentation for the VST/AU plugin part of LS. > I can create a track with 16 instruments. Even can add the track for the > next 16, I can add instrument 17,18 etc. The plugin add's automaticly a new > midi device(plugin) The plugin does not correct assign the port/channel of > instrument nr. 17 and futher. Sounds like a bug. Have you inspected the auto generated sampler setup (e.g. with QSampler or Fantasia)? What exactly does it do on the 17th plugin instance? CU Christian |
|
From: Christian S. <sch...@li...> - 2021-04-17 08:10:23
|
On Freitag, 16. April 2021 09:17:29 CEST Jan Flikweert wrote: > Hi all, Hi! > Does anyone know how to use the Linuxsampler's VST instrument plugin > generally and special in REAPER. Is there any documentation to read? So far nobody has written a documentation for the VST/AU plugin part of LS. > I can create a track with 16 instruments. Even can add the track for the > next 16, I can add instrument 17,18 etc. The plugin add's automaticly a new > midi device(plugin) The plugin does not correct assign the port/channel of > instrument nr. 17 and futher. Sounds like a bug. Have you inspected the auto generated sampler setup (e.g. with QSampler or Fantasia)? What exactly does it do on the 17th plugin instance? CU Christian |
|
From: Jan F. <fl...@ze...> - 2021-04-16 07:17:41
|
Hi all, Does anyone know how to use the Linuxsampler's VST instrument plugin generally and special in REAPER. Is there any documentation to read? I can create a track with 16 instruments. Even can add the track for the next 16, I can add instrument 17,18 etc. The plugin add's automaticly a new midi device(plugin) The plugin does not correct assign the port/channel of instrument nr. 17 and futher. Kind regards, Jan Flikweert |
|
From: Christian S. <sch...@li...> - 2021-04-08 18:24:45
|
On Mittwoch, 7. April 2021 16:31:10 CEST you wrote: > Hi Christian/List, > > I've written and fully tested a working "neighbour notes" round robin > script with some rudimentary logic to avoid "dead" notes at either extreme > of the instrument. > The initial instrument range is for a cello, but can easily be edited for > any instrument range. > > I've uploaded it here (RRCello. LScript): > https://drive.google.com/file/d/18c6iL-zR-tDYNBFyqUS01HnZipwbvPuJ/view?usp=s > haring > > If nothing else, it might serve as a good "real world" example of NKSP in > Linuxsampler. Just some notes/tips from my side: > on init > {Round robin script for Cello. Version 0.1} > {Written by Andrew Coughlan. Released under GPL v2 or later.} Maybe a more detailed description what the script does would make sense. E.g. "Assumes an instrument with one sample per key; it emulates round robin samples by randomly picking another sample (from another region) and pitching it up or down accordingly." > > declare polyphonic $n > declare polyphonic $RR > declare polyphonic $lokey := 36 {lowest playable note of this instrument} > declare polyphonic $hikey := 76 {highest playable note of this instrument} > > end on You could automate retrieval of $lokey and $hikey, at least for gig sounds: by calling same_region($i, $i) in a loop inside on init .. end on for all 127 possible MIDI note numbers can could check which region does have a sample mapped to a MIDI key: http://doc.linuxsampler.org/Instrument_Scripts/NKSP_Language/Reference/same_region_function/ And no need to make $lokey and $hikey polyphonic, as their values don't ever change during individual note events. > on note > {message ("Note played is number: " & $EVENT_NOTE)} > {uncomment for getting lokey/hikey instrument range numbers} > > ignore_event() > > if ( $EVENT_NOTE +2 > $hikey .and. $EVENT_NOTE <= $hikey ) ".and." is a bitwise and, which is quite special. In this case you would just use the regular logical-and without the dots ("and"). Not that it would make much of a difference in this case though. > > $n := random(0, 2) > > select $n > > case 0 > > $RR := play_note($EVENT_NOTE -2, $EVENT_VELOCITY) > change_tune($RR, 200c) > > case 1 > > $RR := play_note($EVENT_NOTE -1, $EVENT_VELOCITY) > change_tune($RR, 100c) > > case 2 > > $RR := play_note($EVENT_NOTE, $EVENT_VELOCITY) > > end select As $n is used nowhere else, you could also just inline the random() call like: select random(0, 2) ... end select If you want a true round robin behaviour, not a randomized one, then you would probably use a global variable instead and increment it with each note: on init { important: not polyphonic! } declare $rr end on function bumpRoundRobin synchronized $rr := $rr + 1 if ($rr > 2) $rr := -2 end if end synchronized end function on note call bumpRoundRobin() select $rr ... end select end on > > else > > if ( $EVENT_NOTE -2 < $lokey .and. $EVENT_NOTE >= $lokey ) > > $n := random(0, 2) > > select $n > > case 0 > > $RR := play_note($EVENT_NOTE +2, $EVENT_VELOCITY) > change_tune($RR, -200c) > > case 1 > > $RR := play_note($EVENT_NOTE +1, $EVENT_VELOCITY) > change_tune($RR, -100c) > > case 2 > > $RR := play_note($EVENT_NOTE, $EVENT_VELOCITY) > > end select > > else > > if ($EVENT_NOTE -1 > $lokey .and. $EVENT_NOTE +2 < $hikey) > > $n := random(0, 4) > > select $n > > case 0 > > $RR := play_note($EVENT_NOTE -2, $EVENT_VELOCITY) > change_tune($RR, 200c) > > case 1 > > $RR := play_note($EVENT_NOTE -1, $EVENT_VELOCITY) > change_tune($RR, 100c) > > case 2 > > $RR := play_note($EVENT_NOTE +2, $EVENT_VELOCITY) > change_tune($RR, -200c) > > case 3 > > $RR := play_note($EVENT_NOTE +1, $EVENT_VELOCITY) > change_tune($RR, -100c) > > case 4 > > $RR := play_note($EVENT_NOTE, $EVENT_VELOCITY) > > end select > end if > > end if > > end if > > > end on Alternatively you could also reduce the overall amount of code lines tremendously by dropping the select ... end select approach and using arithmetics instead: $n := random(-2, +2) $RR := play_note($EVENT_NOTE + $n, $EVENT_VELOCITY) if ($n) change_tune($RR, $n * -100c) end if CU Christian |
|
From: Andrew C <cou...@gm...> - 2021-04-07 14:31:46
|
Hi Christian/List, I've written and fully tested a working "neighbour notes" round robin script with some rudimentary logic to avoid "dead" notes at either extreme of the instrument. The initial instrument range is for a cello, but can easily be edited for any instrument range. I've uploaded it here (RRCello. LScript): https://drive.google.com/file/d/18c6iL-zR-tDYNBFyqUS01HnZipwbvPuJ/view?usp=sharing If nothing else, it might serve as a good "real world" example of NKSP in Linuxsampler. Cheers, Andrew. On Tue, Apr 6, 2021 at 11:10 AM Christian Schoenebeck < sch...@li...> wrote: > On Dienstag, 6. April 2021 10:39:55 CEST Andrew C wrote: > > Hi Christian, > > > > Thanks so much for the code snippets, they'll get me off to a good start! > > I'll be doing this wholly in gig format, not sfz. > > Ok, then just hit Ctrl + S whenever you changed something in gigedit's > script > editor. That will cause the script to be reloaded by the sampler to make > your > changes audible. > > > What I mean by repitching the note is not a slide, but rather play for > > example "$EVENT_NOTE +1" (A C# sample) at the same pitch as C > > ($EVENT_NOTE).. > > That way if I have a semitone sampled instrument, I could effectively get > > extra repitched samples per note. > > > > I think for this I can simply use change_tune to do an "instant" -100 > cent > > tune down so the C# sample sounds at the C pitch without too much > > stretching? > > The trick here is that play_note() returns the note ID of that > programmatically triggered new note. So you would use that note id and > pass it > to change_tune() like: > > on init > declare polyphonic $staccatoNote > end init > > on note > ... > $staccatoNote := play_note($EVENT_NOTE + $n, $EVENT_VELOCITY) > { let's say drop pitch by 30 cents immediately } > change_tune($staccatoNote, -30c) > end note > > Because obviously you just want to change the tuning of that sample; not > of > the original one. If you want to change the original one as well, let's > say > bring some randomness there as well: > > change_tune($EVENT_NOTE, random(-30C, +30C)) > > I guess you get the point. > > CU > Christian > > > > > _______________________________________________ > Linuxsampler-devel mailing list > Lin...@li... > https://lists.sourceforge.net/lists/listinfo/linuxsampler-devel > |
|
From: Christian S. <sch...@li...> - 2021-04-06 10:08:35
|
On Dienstag, 6. April 2021 10:39:55 CEST Andrew C wrote:
> Hi Christian,
>
> Thanks so much for the code snippets, they'll get me off to a good start!
> I'll be doing this wholly in gig format, not sfz.
Ok, then just hit Ctrl + S whenever you changed something in gigedit's script
editor. That will cause the script to be reloaded by the sampler to make your
changes audible.
> What I mean by repitching the note is not a slide, but rather play for
> example "$EVENT_NOTE +1" (A C# sample) at the same pitch as C
> ($EVENT_NOTE)..
> That way if I have a semitone sampled instrument, I could effectively get
> extra repitched samples per note.
>
> I think for this I can simply use change_tune to do an "instant" -100 cent
> tune down so the C# sample sounds at the C pitch without too much
> stretching?
The trick here is that play_note() returns the note ID of that
programmatically triggered new note. So you would use that note id and pass it
to change_tune() like:
on init
declare polyphonic $staccatoNote
end init
on note
...
$staccatoNote := play_note($EVENT_NOTE + $n, $EVENT_VELOCITY)
{ let's say drop pitch by 30 cents immediately }
change_tune($staccatoNote, -30c)
end note
Because obviously you just want to change the tuning of that sample; not of
the original one. If you want to change the original one as well, let's say
bring some randomness there as well:
change_tune($EVENT_NOTE, random(-30C, +30C))
I guess you get the point.
CU
Christian
|
|
From: Andrew C <cou...@gm...> - 2021-04-06 09:40:21
|
Hi Christian, Thanks so much for the code snippets, they'll get me off to a good start! I'll be doing this wholly in gig format, not sfz. What I mean by repitching the note is not a slide, but rather play for example "$EVENT_NOTE +1" (A C# sample) at the same pitch as C ($EVENT_NOTE).. That way if I have a semitone sampled instrument, I could effectively get extra repitched samples per note. I think for this I can simply use change_tune to do an "instant" -100 cent tune down so the C# sample sounds at the C pitch without too much stretching? Cheers. Andrew. On Tue, Apr 6, 2021 at 10:21 AM Christian Schoenebeck < sch...@li...> wrote: > On Sonntag, 4. April 2021 22:24:09 CEST Andrew C wrote: > > Hi all, > > > > I'm looking into creating a poorman's round robin script for some short > > note staccatos. > > I assume you want to use sfz. In this case create a text file somewhere > which > you will fill with NKSP script code and link that script in your sfz file > with > the 'script' opcode: > > http://doc.linuxsampler.org/sfz/script_opcode/ > > The advantage with the gig format is that you get immediate syntax / error > / > warning feedbacks while typing the script in gigedit's script editor. So > this > is probably more convenient and faster, especially on first steps. > > However alternatively you can also use 'ls_instr_script' from the command > line > to check your script for errors: > > cat /some/where/foo.txt | ls_instr_script sfz > > Additional options are described by: > > ls_instr_script > > > My plan is to write a script which will: > > > > At note on, pick a random number between 0 and 4. > > on init > declare polyphonic $n > end init > > on note > $n := random(0, 4) > message("Random number is " & $n) > ... > end on > > > Play either the same note, 2 semitones up but repitched to the original > > note's pitch, 1 semitone up but repitched, 2 semitones down but repitched > > or 1 semitone down but repitched. > > select $n > case 0 > play_note($EVENT_NOTE + 2, $EVENT_VELOCITY) > case 1 > ... > case 2 > ... > case 3 > ... > case 4 > ... > end select > > I don't get though what you mean with "repitched to the original note's > pitch". Do you want to start it with a x semitones offset and let it slide > to > the original pitch within a certain duration? > > > I looked at the NKSP reference manual and it seems like I can achieve the > > first part with the Random() function. > > > > I'm considering using change_pitch function to simply tell the future > note > > to pitch itself up or down and then use play_note to play the new note's > > sample but repitched. > > The function is called change_tune() for some reason (KSP invention): > > http://doc.linuxsampler.org/Instrument_Scripts/NKSP_Language/Reference/ > change_tune_function/ > <http://doc.linuxsampler.org/Instrument_Scripts/NKSP_Language/Reference/change_tune_function/> > > And you would probably want to use it in conjunction with > change_tune_time() > to control how long it will take to perform the tuning/pitch change. > > > > > play_note does send a new midi note_on event, if I'm not mistaken? > > Yes. > > This tour is probabably a good starting point: > > http://doc.linuxsampler.org/Instrument_Scripts/NKSP_Language/ > > Hover your mouse over keywords to see a short summary what they are doing. > Click on them to get to the detailed description of the keyword. > > > > > Thanks, > > > > Andrew. > > CU > Christian > > > > > _______________________________________________ > Linuxsampler-devel mailing list > Lin...@li... > https://lists.sourceforge.net/lists/listinfo/linuxsampler-devel > |
|
From: Christian S. <sch...@li...> - 2021-04-06 09:21:23
|
On Sonntag, 4. April 2021 22:24:09 CEST Andrew C wrote: > Hi all, > > I'm looking into creating a poorman's round robin script for some short > note staccatos. I assume you want to use sfz. In this case create a text file somewhere which you will fill with NKSP script code and link that script in your sfz file with the 'script' opcode: http://doc.linuxsampler.org/sfz/script_opcode/ The advantage with the gig format is that you get immediate syntax / error / warning feedbacks while typing the script in gigedit's script editor. So this is probably more convenient and faster, especially on first steps. However alternatively you can also use 'ls_instr_script' from the command line to check your script for errors: cat /some/where/foo.txt | ls_instr_script sfz Additional options are described by: ls_instr_script > My plan is to write a script which will: > > At note on, pick a random number between 0 and 4. on init declare polyphonic $n end init on note $n := random(0, 4) message("Random number is " & $n) ... end on > Play either the same note, 2 semitones up but repitched to the original > note's pitch, 1 semitone up but repitched, 2 semitones down but repitched > or 1 semitone down but repitched. select $n case 0 play_note($EVENT_NOTE + 2, $EVENT_VELOCITY) case 1 ... case 2 ... case 3 ... case 4 ... end select I don't get though what you mean with "repitched to the original note's pitch". Do you want to start it with a x semitones offset and let it slide to the original pitch within a certain duration? > I looked at the NKSP reference manual and it seems like I can achieve the > first part with the Random() function. > > I'm considering using change_pitch function to simply tell the future note > to pitch itself up or down and then use play_note to play the new note's > sample but repitched. The function is called change_tune() for some reason (KSP invention): http://doc.linuxsampler.org/Instrument_Scripts/NKSP_Language/Reference/ change_tune_function/ And you would probably want to use it in conjunction with change_tune_time() to control how long it will take to perform the tuning/pitch change. > > play_note does send a new midi note_on event, if I'm not mistaken? Yes. This tour is probabably a good starting point: http://doc.linuxsampler.org/Instrument_Scripts/NKSP_Language/ Hover your mouse over keywords to see a short summary what they are doing. Click on them to get to the detailed description of the keyword. > > Thanks, > > Andrew. CU Christian |
|
From: Andrew C <cou...@gm...> - 2021-04-04 20:24:41
|
Hi all, I'm looking into creating a poorman's round robin script for some short note staccatos. My plan is to write a script which will: At note on, pick a random number between 0 and 4. Play either the same note, 2 semitones up but repitched to the original note's pitch, 1 semitone up but repitched, 2 semitones down but repitched or 1 semitone down but repitched. I looked at the NKSP reference manual and it seems like I can achieve the first part with the Random() function. I'm considering using change_pitch function to simply tell the future note to pitch itself up or down and then use play_note to play the new note's sample but repitched. play_note does send a new midi note_on event, if I'm not mistaken? Thanks, Andrew. |
|
From: Christian S. <sch...@li...> - 2021-03-23 12:20:49
|
On Montag, 22. März 2021 22:29:13 CET Frank Neumann wrote: > Hi Christian and all, > > > > I was wondering if some script or small tool exists that can do "basic" > > > conversion of .gig files to (set of .wav samples + .sfz). > > > > I am not aware of a free one. So I guess you would be off with some of the > > known commercial sample library conversion tools. And as you know, they > > just perform a very, very rough conversion to put it mildly, like they > > preserve the samples, their loop points, mappings to regions on the > > keyboard, but anything beyond that will require manually tweaking. > > > > In other words: you might be better off with writing a script ontop of > > gigextract and co and then do the rest manually. > > Ok, thanks. I assume the tools you are referring to above are mostly from > the Windows world, but I'll want to stay completely in the Linux domain > (and I am not a real fan of Wine :-). Could be a nice hacking project (and > maybe a good reason to finally dive deeper into Python), but I am extremely Yes, the common commercial conversion tools are either Windows or macOS. I am not sure how your C++ skills are, but you might also have a look at libgig's "korg2gig" tool before eventually deciding which way to go: http://svn.linuxsampler.org/cgi-bin/viewvc.cgi/libgig/trunk/src/tools/korg2gig.cpp?view=markup This tool converts from Korg format to gig format. If a C++ solution is an option for you, then you might also take that as a basis (copy & adjust). You would basically invert the process and printing sfz opcodes to a text file is trivial. > slow with such things, so it might take "a while". No promises whatsoever. Applies to everything here anyway. :) CU Christian |
|
From: Frank N. <bea...@we...> - 2021-03-22 21:29:29
|
Hi Christian and all, > > I was wondering if some script or small tool exists that can do "basic" > > conversion of .gig files to (set of .wav samples + .sfz). > > I am not aware of a free one. So I guess you would be off with some of the > known commercial sample library conversion tools. And as you know, they just > perform a very, very rough conversion to put it mildly, like they preserve the > samples, their loop points, mappings to regions on the keyboard, but anything > beyond that will require manually tweaking. > > In other words: you might be better off with writing a script ontop of > gigextract and co and then do the rest manually. Ok, thanks. I assume the tools you are referring to above are mostly from the Windows world, but I'll want to stay completely in the Linux domain (and I am not a real fan of Wine :-). Could be a nice hacking project (and maybe a good reason to finally dive deeper into Python), but I am extremely slow with such things, so it might take "a while". No promises whatsoever. Thanks also for your thoughts about forks etc. Interesting stuff, definitely. Greetings, Frank |