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
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Doug G. <dou...@gm...> - 2022-01-03 01:59:04
|
I have run a test on the SL-88, the lowest reported release velocity seems to be 0x01. I have tried to release keys as gently as I can but have not yet seen a release velocity of zero. It’s easy to hit the 0x01 so I’m quite confident it is the lowest possible value. This was not what I expected but makes good sense. Doug Gray Sent from my iPhone > On 3 Jan 2022, at 4:19 am, Jerash music <rmo...@gm...> wrote: > > > >> Le 2 janv. 2022 à 14:53, Christian Schoenebeck <sch...@li...> a écrit : >> >>> On Sonntag, 2. Januar 2022 14:42:55 CET Jerash music wrote: >>> Having worked with (and repairing) many midi keyboard controllers, I can say >>> that release velocity is not very common. Mainly available on high range >>> keyboard, often with weighted keys, piano style. >>> >>> Keyboard rubbers with triple sensors offer greater definition so to have >>> the release velocity, but it can be implemented in the device firmware or >>> not, at manufacturer’s choice. Keyboard rubber with double sensor could >>> also do release velocity, but may miss some when the key is not fully >>> pressed before actual release. Here, again, the sent message depends on >>> firmware implementation. >>>> I suggest that that should only be the case when note off velocity is >>>> actually zero. >>> I do agree with this, it totally makes sense to me. >>> >>> My 2 cents, >>> Raphaël >> >> Ok, but the core question still is: can we expect keyboards *with* note-off >> velocity sensors to *never* send note-off velocity zero? > > Mmm, …yes it may be possible. > it may be possible to send a zero release velocity if the firmware calculates a release velocity and includes a « timeout » for the maximum release time, and then decides that timed out values are zero. > But I have not expressly tested it, and each manufacturer could have his own vision. > > I’ve been explained by Yamaha that the three contact rubbers are especially useful for retriggering calculation of half pressed keys, but they did not talk about release velocity calculation. > Maybe Doug Gray could try the following on his SL88 : « Release the key as slow as possible in about 4 seconds » to try to reach the minimum release velocity value. > As the keyboard rubber has three contacts, it could potentially send a zero release velocity if you reach a timeout between two contacts releases. I’m not sure if it is humanly possible to reach this potential timeout, as the contact points are really really close. The real duration of this timeout is not documented so needs testing. > > Raphaël > > _______________________________________________ > Linuxsampler-devel mailing list > Lin...@li... > https://lists.sourceforge.net/lists/listinfo/linuxsampler-devel |
From: Jerash m. <rmo...@gm...> - 2022-01-02 17:19:24
|
> Le 2 janv. 2022 à 14:53, Christian Schoenebeck <sch...@li...> a écrit : > > On Sonntag, 2. Januar 2022 14:42:55 CET Jerash music wrote: >> Having worked with (and repairing) many midi keyboard controllers, I can say >> that release velocity is not very common. Mainly available on high range >> keyboard, often with weighted keys, piano style. >> >> Keyboard rubbers with triple sensors offer greater definition so to have >> the release velocity, but it can be implemented in the device firmware or >> not, at manufacturer’s choice. Keyboard rubber with double sensor could >> also do release velocity, but may miss some when the key is not fully >> pressed before actual release. Here, again, the sent message depends on >> firmware implementation. >>> I suggest that that should only be the case when note off velocity is >>> actually zero. >> I do agree with this, it totally makes sense to me. >> >> My 2 cents, >> Raphaël > > Ok, but the core question still is: can we expect keyboards *with* note-off > velocity sensors to *never* send note-off velocity zero? Mmm, …yes it may be possible. it may be possible to send a zero release velocity if the firmware calculates a release velocity and includes a « timeout » for the maximum release time, and then decides that timed out values are zero. But I have not expressly tested it, and each manufacturer could have his own vision. I’ve been explained by Yamaha that the three contact rubbers are especially useful for retriggering calculation of half pressed keys, but they did not talk about release velocity calculation. Maybe Doug Gray could try the following on his SL88 : « Release the key as slow as possible in about 4 seconds » to try to reach the minimum release velocity value. As the keyboard rubber has three contacts, it could potentially send a zero release velocity if you reach a timeout between two contacts releases. I’m not sure if it is humanly possible to reach this potential timeout, as the contact points are really really close. The real duration of this timeout is not documented so needs testing. Raphaël |
From: Christian S. <sch...@li...> - 2022-01-02 13:53:43
|
On Sonntag, 2. Januar 2022 14:42:55 CET Jerash music wrote: > Having worked with (and repairing) many midi keyboard controllers, I can say > that release velocity is not very common. Mainly available on high range > keyboard, often with weighted keys, piano style. > > Keyboard rubbers with triple sensors offer greater definition so to have > the release velocity, but it can be implemented in the device firmware or > not, at manufacturer’s choice. Keyboard rubber with double sensor could > also do release velocity, but may miss some when the key is not fully > pressed before actual release. Here, again, the sent message depends on > firmware implementation. > >I suggest that that should only be the case when note off velocity is > >actually zero. > I do agree with this, it totally makes sense to me. > > My 2 cents, > Raphaël Ok, but the core question still is: can we expect keyboards *with* note-off velocity sensors to *never* send note-off velocity zero? CU Christian |
From: Jerash m. <rmo...@gm...> - 2022-01-02 13:43:08
|
Having worked with (and repairing) many midi keyboard controllers, I can say that release velocity is not very common. Mainly available on high range keyboard, often with weighted keys, piano style. Keyboard rubbers with triple sensors offer greater definition so to have the release velocity, but it can be implemented in the device firmware or not, at manufacturer’s choice. Keyboard rubber with double sensor could also do release velocity, but may miss some when the key is not fully pressed before actual release. Here, again, the sent message depends on firmware implementation. >I suggest that that should only be the case when note off velocity is actually zero. I do agree with this, it totally makes sense to me. My 2 cents, Raphaël > Le 2 janv. 2022 à 13:00, Doug Gray <dou...@gm...> a écrit : > > For the record my Studiologic SL88 keyboard controller does send note off with a measured velocity value. I have verified this myself since the sfz file I am using has key off sounds. This velocity is measured at key release. > I see the documentation states that the note on velocity is reused for note off but I suggest that that should only be the case when note off velocity is actually zero. > I don’t think it is likely at least for triple sensor that ‘most midi controllers’ send zero velocity note-off. It would be good to verify this. > > Doug Gray > >> On 2 Jan 2022, at 6:28 pm, Jan Flikweert <fl...@ze...> wrote: >> >> JanFl. Wrote:" Thank you very much for this solution and the things I >> learned. It works." >> >> The solution does not work for gig files. >> >> The funny thing is that gig files can also play a release sample after aloop >> from a sample. The dimension is called releasetrigger. One dimension has a >> normal loop and the release sample has no loop. >> >> Kind regards, >> >> >> Jan Fl. >> >> >> >> _______________________________________________ >> Linuxsampler-devel mailing list >> Lin...@li... >> https://lists.sourceforge.net/lists/listinfo/linuxsampler-devel > > > _______________________________________________ > Linuxsampler-devel mailing list > Lin...@li... > https://lists.sourceforge.net/lists/listinfo/linuxsampler-devel |
From: Christian S. <sch...@li...> - 2022-01-02 12:18:12
|
Mja, that behaviour could likewise easily be adjusted for the gig engine as I did for the sfz engine this week. From the sfz docs I see, people seem to expect that the note-on velocity is always used instead of the note-off velocity? Hence I just changed that exactly this way for the sfz engine this week. For the gig engine: I agree with Dough here, if you have a keyboard that supports note-off velocity, you want to use it. But the fact that most MIDI keyboards just send note-off velocity zero still applies. So this must coexist. Doug, does your keyboard *ever* send a note-off with velocity zero? If it does not, then simply checking for velocity zero might indeed be the way to go. Maybe even for the sfy engine, too? CU Christian On Sonntag, 2. Januar 2022 13:00:28 CET Doug Gray wrote: > For the record my Studiologic SL88 keyboard controller does send note off > with a measured velocity value. I have verified this myself since the sfz > file I am using has key off sounds. This velocity is measured at key > release. I see the documentation states that the note on velocity is reused > for note off but I suggest that that should only be the case when note off > velocity is actually zero. I don’t think it is likely at least for triple > sensor that ‘most midi controllers’ send zero velocity note-off. It would > be good to verify this. > > Doug Gray > > > On 2 Jan 2022, at 6:28 pm, Jan Flikweert <fl...@ze...> wrote: > > > > JanFl. Wrote:" Thank you very much for this solution and the things I > > learned. It works." > > > > The solution does not work for gig files. > > > > The funny thing is that gig files can also play a release sample after > > aloop from a sample. The dimension is called releasetrigger. One > > dimension has a normal loop and the release sample has no loop. > > > > Kind regards, > > > > > > Jan Fl. > > > > > > > > _______________________________________________ > > Linuxsampler-devel mailing list > > Lin...@li... > > https://lists.sourceforge.net/lists/listinfo/linuxsampler-devel > > _______________________________________________ > Linuxsampler-devel mailing list > Lin...@li... > https://lists.sourceforge.net/lists/listinfo/linuxsampler-devel |
From: Doug G. <dou...@gm...> - 2022-01-02 12:00:42
|
For the record my Studiologic SL88 keyboard controller does send note off with a measured velocity value. I have verified this myself since the sfz file I am using has key off sounds. This velocity is measured at key release. I see the documentation states that the note on velocity is reused for note off but I suggest that that should only be the case when note off velocity is actually zero. I don’t think it is likely at least for triple sensor that ‘most midi controllers’ send zero velocity note-off. It would be good to verify this. Doug Gray > On 2 Jan 2022, at 6:28 pm, Jan Flikweert <fl...@ze...> wrote: > > JanFl. Wrote:" Thank you very much for this solution and the things I > learned. It works." > > The solution does not work for gig files. > > The funny thing is that gig files can also play a release sample after aloop > from a sample. The dimension is called releasetrigger. One dimension has a > normal loop and the release sample has no loop. > > Kind regards, > > > Jan Fl. > > > > _______________________________________________ > Linuxsampler-devel mailing list > Lin...@li... > https://lists.sourceforge.net/lists/listinfo/linuxsampler-devel |
From: Jan F. <fl...@ze...> - 2022-01-02 07:27:31
|
JanFl. Wrote:" Thank you very much for this solution and the things I learned. It works." The solution does not work for gig files. The funny thing is that gig files can also play a release sample after aloop from a sample. The dimension is called releasetrigger. One dimension has a normal loop and the release sample has no loop. Kind regards, Jan Fl. |
From: Jan F. <fl...@ze...> - 2022-01-01 17:52:35
|
CU wrote: Fixed. Works now as expected: http://svn.linuxsampler.org/cgi-bin/viewvc.cgi?view=revision&revision=4013 The order of the regions in the sfz file does not matter for LS BTW. I just saw before that it does for other players. CU Christian -------------- Thank you very much for this solution and the things I learned. It works. Kind regards, Jan Flikweert |
From: Christian S. <sch...@li...> - 2021-12-31 18:12:03
|
On Donnerstag, 30. Dezember 2021 22:04:37 CET you wrote: > Hi, > > I tried flipping the order of those regions. That did not work. > > Kind regards, Fixed. Works now as expected: http://svn.linuxsampler.org/cgi-bin/viewvc.cgi?view=revision&revision=4013 The order of the regions in the sfz file does not matter for LS BTW. I just saw before that it does for other players. CU Christian |
From: Jan F. <fl...@ze...> - 2021-12-30 21:04:46
|
Hi, I tried flipping the order of those regions. That did not work. Kind regards, Jan Flikweert -------------------- CU Wrote: Have you tried flipping the order of those two regions, i.e. release trigger region after attack region? CU Christian |
From: Christian S. <sch...@li...> - 2021-12-30 18:22:29
|
On Mittwoch, 29. Dezember 2021 21:59:13 CET Jan Flikweert wrote: > Christian, > > Thanks for your explanation. I conclude that it is only needed to set notes > on/off. Stops do not need on/off. If you do not need a instrument, do not > sent notes to it. > > The next file sample-release-060-C.wav contains a sinus tone 220 hz. The > file sample-Default-060-C.wav a normal principal. > > Using Fantasia / Linuxsampler works well. > jOrgan / Linuxsampler does not work for the release part (only note on/off!) > jOrgan / sForzando works correct > > sForzando is not advisable because it cannot handle large organs. > Linuxsampler provides for me a beautiful organ with 150 instruments/stops. > Of course they are not needed all at one time, but LS can handle them, load > them. > > Kind regards, > > Jan Flikweert > > ------------------------------------- > Test.sfz > <group> > lokey=36 > hikey=96 > > <region> > sample=release-060-C.wav > trigger=release > loop_mode=one_shot > > <region> > sample=Default-060-C.wav > loop_mode=loop_sustain > loop_start=97041 > loop_end=163161 > ------------------------------------------- Have you tried flipping the order of those two regions, i.e. release trigger region after attack region? CU Christian |
From: Christian S. <sch...@li...> - 2021-12-30 18:02:46
|
On Dienstag, 28. Dezember 2021 11:21:28 CET Andrew C wrote: > This is the output when I, shall we say, non-interactively (i.e netcat) > send a command to Linuxsampler: > > Data type is libgig and data version is 4.3.0.svn34 > Trying to find an available editor. > Loading instrument editor plugins...Successfully loaded: > /usr/local/lib/linuxsampler/plugins/libgigeditlinuxsamplerplugin.so > OK > InnerFactories.begin. > Returning available editors result. > Instrument plugin is > Searching for matching editors now... > Trying to find an editor that can support: libgig and 4.3.0.svn34 > Trying to find an available editor. > Loading instrument editor plugins...Successfully loaded: > /usr/local/lib/linuxsampler/plugins/libgigeditlinuxsamplerplugin.so > OK > InnerFactories.begin. > Returning available editors result. > Registered instrument editors again: > Searched finished for matching editors... > vEditors looks empty. What about available editors string?Trying to find an > available editor. > Loading instrument editor plugins...Successfully loaded: > /usr/local/lib/linuxsampler/plugins/libgigeditlinuxsamplerplugin.so > OK > InnerFactories.begin. > Returning available editors result. > ERROR: There is not any instrument editor registered to the sampler! > > > It looks like the iterating through the previously registered editors gets > "forgotten" or otherwise the 'InnerFactories.begin()' loop is empty in the > 'non-interactive' example.. > Phew.. That's enough wall of text then! Are you requesting a sampler reset per LSCP comand via netcat somewhere in between? Because a sampler reset request will reset really everything, i.e. the sampler would also call src/Sampler.cpp: void Sampler::Reset() { ... InstrumentEditorFactory::ClosePlugins(); ... } And ClosePlugin() closes all open plugin DLLs. Once the instrument editor DLL is unloaded from memory, the following destructor code is executed automatically: src/plugins/InstrumentEditorFactory.h: ~InnerFactoryRegistrator() { InnerFactoryTemplate<PluginClass_T> innerFactory; InstrumentEditor* pEditor = innerFactory.Create(); if (InnerFactories.count(pEditor->Name())) { InnerFactory* pZombie = InnerFactories[pEditor->Name()]; InnerFactories.erase(pEditor->Name()); if (pZombie) delete pZombie; } innerFactory.Destroy(pEditor); } CU Christian |
From: Jan F. <fl...@ze...> - 2021-12-29 20:59:29
|
Christian, Thanks for your explanation. I conclude that it is only needed to set notes on/off. Stops do not need on/off. If you do not need a instrument, do not sent notes to it. The next file sample-release-060-C.wav contains a sinus tone 220 hz. The file sample-Default-060-C.wav a normal principal. Using Fantasia / Linuxsampler works well. jOrgan / Linuxsampler does not work for the release part (only note on/off!) jOrgan / sForzando works correct sForzando is not advisable because it cannot handle large organs. Linuxsampler provides for me a beautiful organ with 150 instruments/stops. Of course they are not needed all at one time, but LS can handle them, load them. Kind regards, Jan Flikweert ------------------------------------- Test.sfz <group> lokey=36 hikey=96 <region> sample=release-060-C.wav trigger=release loop_mode=one_shot <region> sample=Default-060-C.wav loop_mode=loop_sustain loop_start=97041 loop_end=163161 ------------------------------------------- Kind regards, Jan Flikweert -----Original Message----- From: Christian Schoenebeck [mailto:sch...@li...] Sent: woensdag 29 december 2021 18:44 To: lin...@li... Subject: Re: [Linuxsampler-devel] midi message fantasia note off On Dienstag, 28. Dezember 2021 08:01:06 CET Jan Flikweert wrote: > Christian, > > Probably more clear I translated the midi messages I send from jOrgan to > LSCP: > > Note on: > > "SEND CHANNEL MIDI_DATA NOTE_ON 0 60 127" > > Note off: > > "SEND CHANNEL MIDI_DATA NOTE_OFF 0 60 0" That's a note-off, hence release triggered samples *are* played at this point. > Instrument/Stop on: > > "SEND CHANNEL MIDI_DATA CC 0 7 127" That means "set channel volume to maximum". No release sample played. > Instrument/Stop off: > > "SEND CHANNEL MIDI_DATA CC 0 1 0" That means "set Modulation Wheel to minimum". No release sample played. > "SEND CHANNEL MIDI_DATA CC 0 7 0" That means "set channel volume to minimum". No release sample played. Release triggered samples are only played if *notes* are released, which is e.g. on note-off, sustain release CC, exclusive groups conflicts. That's the expected behaviour, not a bug, and is consistent among all players, not just LS. If you turn the volume down to zero, the notes are still there. They continue to play and still advance their playback positions accordingly. You just can't hear them, but that's it. If you want to play samples on CCs, you have to use CC triggered samples instead. That's supported on patch level both by SFZ and gig format. Additionally you can also write an NKSP script if you really want some fancy behaviour that goes beyond of what the built-in patch CC triggered mechanisms can do. CU Christian _______________________________________________ Linuxsampler-devel mailing list Lin...@li... https://lists.sourceforge.net/lists/listinfo/linuxsampler-devel |
From: Christian S. <sch...@li...> - 2021-12-29 17:44:27
|
On Dienstag, 28. Dezember 2021 08:01:06 CET Jan Flikweert wrote: > Christian, > > Probably more clear I translated the midi messages I send from jOrgan to > LSCP: > > Note on: > > "SEND CHANNEL MIDI_DATA NOTE_ON 0 60 127" > > Note off: > > "SEND CHANNEL MIDI_DATA NOTE_OFF 0 60 0" That's a note-off, hence release triggered samples *are* played at this point. > Instrument/Stop on: > > "SEND CHANNEL MIDI_DATA CC 0 7 127" That means "set channel volume to maximum". No release sample played. > Instrument/Stop off: > > "SEND CHANNEL MIDI_DATA CC 0 1 0" That means "set Modulation Wheel to minimum". No release sample played. > "SEND CHANNEL MIDI_DATA CC 0 7 0" That means "set channel volume to minimum". No release sample played. Release triggered samples are only played if *notes* are released, which is e.g. on note-off, sustain release CC, exclusive groups conflicts. That's the expected behaviour, not a bug, and is consistent among all players, not just LS. If you turn the volume down to zero, the notes are still there. They continue to play and still advance their playback positions accordingly. You just can't hear them, but that's it. If you want to play samples on CCs, you have to use CC triggered samples instead. That's supported on patch level both by SFZ and gig format. Additionally you can also write an NKSP script if you really want some fancy behaviour that goes beyond of what the built-in patch CC triggered mechanisms can do. CU Christian |
From: Quick K. <hep...@ya...> - 2021-12-29 04:37:47
|
--- a/src/common/RTMath.cpp 2021-12-25 18:37:48.733719298 +0800 +++ b/src/common/RTMath.cpp 2021-12-25 21:54:21.914927577 +0800 @@ -73,6 +73,10 @@ return t; #elif defined(__APPLE__) return (time_stamp_t) mach_absolute_time(); + #elif defined(__loongarch64) + uint64_t t,tmpAAA; + __asm__ __volatile__ ("rdtime.d %0, %1":"=r"(t),"=r"(tmpAAA)); + return time_stamp_t(t>>8); #else // we don't want to use a slow generic solution # error "Sorry, LinuxSampler lacks time stamp code for your system." # error "Please report this error and the CPU you are using to the LinuxSampler developers mailing list!" --- a/linuxsampler/src/common/atomic.h 2021-12-29 04:22:34.535260312 +0800 +++ b/linuxsampler/src/common/atomic.h 2021-12-29 03:43:41.403752006 +0800 @@ -1186,6 +1186,63 @@ #endif /* __ARCH_M68K_ATOMIC __ */ #else +#ifdef __loongarch64 + +typedef struct { volatile int counter; } atomic_t; +#define ATOMIC_INIT(i) { (i) } + +#define atomic_read(v) ((v)->counter) +#define atomic_set(v,i) (((v)->counter) = (i)) + +static __inline__ void atomic_add(int i, volatile atomic_t *v) +{ + __asm__ __volatile__( + "amadd_db.w $zero, %1, %0" + :"+ZB" (v->counter) + :"r"(i) + :"memory"); +} + +static __inline__ void atomic_sub(int i, volatile atomic_t *v) +{ + __asm__ __volatile__( + "amadd_db.w $zero, %1, %0" + :"+ZB" (v->counter) + :"r"(-i) + :"memory"); +} + +#define atomic_inc(v) (atomic_add(1, (v))) +#define atomic_dec(v) (atomic_sub(1, (v))) + +static __inline__ int haha(int i, volatile atomic_t *v) +{ + int result; + __asm__ __volatile__( + "amadd_db.w %1, %2, %0" + :"+ZB"(v->counter),"=&r"(result) + :"r"(-i) + :"memory"); + return (result-i)==0; +} +#define atomic_dec_and_test(v) haha(1,(v)) + +static inline int atomic_add_negative(int i, volatile atomic_t *v) +{ + int result; + __asm__ __volatile__( + "amadd_db.w %1, %2, %0" + :"+ZB"(v->counter),"=&r"(result) + :"r"(i) + :"memory"); + return (result+i)<0; +} + +#define mb() __asm__ __volatile__("dbar 0" : : : "memory") +#define rmb() mb() +#define wmb() mb() + +#else #warning libs/pbd has no implementation of strictly atomic operations for your hardware. @@ -1231,6 +1288,7 @@ } # endif /* __NO_STRICT_ATOMIC */ +# endif /* loongarch64 */ # endif /* m68k */ # endif /* mips */ # endif /* s390 */ @@ -1288,3 +1346,4 @@ #endif /* linux */ #endif /* __linuxsampler_atomic_h__ */ + |
From: Andrew C <cou...@gm...> - 2021-12-28 10:21:48
|
Hi Christian, Thanks a bunch for setting me on the right track with this. I can now see that the engine is indeed successfully loading the instrument plugin, both at startup and when an instrument editor is requested: // load the DLL (the plugins should register themselfes automatically) void* pDLL = dlopen(sPath.c_str(), RTLD_NOW); if (pDLL) { LoadedDLLs.push_back(pDLL); fprintf (stderr, "Successfully loaded: %s\n", sPath.c_str() ); } else { std::cerr << "Failed to load instrument editor plugin: '" << sPath << "', cause: " << dlerror() << std::endl; } } closedir(hDir); This is the fprintf'ed bit of code + a force reload of the plugins for testing I'm using in AvailableEditors to track what's happening: std::vector<String> InstrumentEditorFactory::AvailableEditors() { // make sure plugins were loaded already bPluginsLoaded = false; //force reload them fprintf (stderr, "Trying to find an available editor.\n"); LoadPlugins(); // render result std::vector<String> result; std::map<String, InnerFactory*>::iterator iter = InnerFactories.begin(); fprintf (stderr, "iterate InnerFactories.begin.\n"); for (; iter != InnerFactories.end(); iter++) { fprintf(stderr, "Iterating through editors..\n "); result.push_back(iter->first); } fprintf (stderr, "Returning available editors result.\n"); return result; } Registered sampler engines: 'GIG','SF2','SFZ' Registered MIDI input drivers: ALSA,JACK Registered audio output drivers: ALSA,JACK Trying to find an available editor. Loading instrument editor plugins...Successfully loaded: /usr/local/lib/linuxsampler/plugins/libgigeditlinuxsamplerplugin.so OK Iterating through editors.. Returning available editors result. Registered instrument editors: 'gigedit' This is the output when the instrument editor is successfully loaded ("interactively" using "EDIT CHANNEL INSTRUMENT 0" the LSCP shell): Data type is libgig and data version is 4.3.0.svn34 Trying to find an available editor. Loading instrument editor plugins...Successfully loaded: /usr/local/lib/linuxsampler/plugins/libgigeditlinuxsamplerplugin.so OK InnerFactories.begin. Iterating through editors.. Returning available editors result. Instrument plugin is 'gigedit' Searching for matching editors now... Trying to find an editor that can support: libgig and 4.3.0.svn34 Found a matching editor. :) Trying to find an available editor. Loading instrument editor plugins...Successfully loaded: /usr/local/lib/linuxsampler/plugins/libgigeditlinuxsamplerplugin.so OK InnerFactories.begin. Iterating through editors.. Returning available editors result. Registered instrument editors again: 'gigedit' Searched finished for matching editors... Found matching editor 'gigedit' for instrument ('/home/andrew/Desktop/Samples/1 Woodwinds/Dan Dean Solo Woodwinds/Dan Dean Cl arinet 5.1.gig', 0) having data structure ('libgig','4.3.0.svn34') InstrumentEditor::Launch(instr=0x7f41b042b9d0,type=libgig,version=4.3.0.svn34) This is the output when I, shall we say, non-interactively (i.e netcat) send a command to Linuxsampler: Data type is libgig and data version is 4.3.0.svn34 Trying to find an available editor. Loading instrument editor plugins...Successfully loaded: /usr/local/lib/linuxsampler/plugins/libgigeditlinuxsamplerplugin.so OK InnerFactories.begin. Returning available editors result. Instrument plugin is Searching for matching editors now... Trying to find an editor that can support: libgig and 4.3.0.svn34 Trying to find an available editor. Loading instrument editor plugins...Successfully loaded: /usr/local/lib/linuxsampler/plugins/libgigeditlinuxsamplerplugin.so OK InnerFactories.begin. Returning available editors result. Registered instrument editors again: Searched finished for matching editors... vEditors looks empty. What about available editors string?Trying to find an available editor. Loading instrument editor plugins...Successfully loaded: /usr/local/lib/linuxsampler/plugins/libgigeditlinuxsamplerplugin.so OK InnerFactories.begin. Returning available editors result. ERROR: There is not any instrument editor registered to the sampler! It looks like the iterating through the previously registered editors gets "forgotten" or otherwise the 'InnerFactories.begin()' loop is empty in the 'non-interactive' example.. Phew.. That's enough wall of text then! Cheers, Andrew. On Mon, Dec 27, 2021 at 2:41 PM Christian Schoenebeck < sch...@li...> wrote: > On Sonntag, 26. Dezember 2021 21:57:12 CET Andrew C wrote: > > *Diff patch for debugging/illustration purposes:* > > > > Index: LS-DEBUG/src/engines/gig/InstrumentResourceManager.cpp > > =================================================================== > > --- LS-DEBUG/src/engines/gig/InstrumentResourceManager.cpp (revision > > 4010) > > +++ LS-DEBUG/src/engines/gig/InstrumentResourceManager.cpp (working > > copy) > > @@ -216,6 +216,8 @@ > > InstrumentEditor* > > > InstrumentResourceManager::LaunchInstrumentEditor(LinuxSampler::EngineChanne > > l* pEngineChannel, instrument_id_t ID, > > void* pUserData) throw (InstrumentManagerException) { > > const String sDataType = GetInstrumentDataStructureName(ID); > > const String sDataVersion = > GetInstrumentDataStructureVersion(ID); > > + fprintf (stderr, "Data type is %s and data version is %s\n", > > sDataType.c_str(), sDataVersion.c_str()); > > + fprintf (stderr, "Instrument plugin is %s\n", > > InstrumentEditorFactory::AvailableEditorsAsString().c_str()); > > The output of this was an empty string there, which means the sampler did > not > load *any* plugin DLL at all. > > > // find instrument editors capable to handle given instrument > > std::vector<String> vEditors = > > InstrumentEditorFactory::MatchingEditors(sDataType, > > sDataVersion); > > @@ -224,10 +226,16 @@ > > fprintf(stderr, > > "ERROR: There is not any instrument editor registered > > to the sampler!\n" > > "[Cause: Make sure an instrument editor is installed > to > > the sampler's plugin dir (%s)]\n", > > - > InstrumentEditorFactory::PluginDirsAsString().c_str() > > - ); > > + > > > InstrumentEditorFactory::PluginDirsAsString().c_str()); > > + if (InstrumentEditorFactory::FoundPlugins) { > > + fprintf (stderr, > > + "We found and registered plugins in %s at startup, > but > > currently available plugins are:%s \n", > > + > InstrumentEditorFactory::PluginDirsAsString().c_str(), > > + > > > > InstrumentEditorFactory::AvailableEditorsAsString().c_str() > > > > + ); > > + }; > > throw InstrumentManagerException( > > - "There is not any instrument editor installed and > > registered to the sampler" > > + "netcat seems to cause issues." > > ); > > Has nothing to do with netcat. > > > } > > fprintf(stderr, > > Index: LS-DEBUG/src/plugins/InstrumentEditorFactory.cpp > > =================================================================== > > --- LS-DEBUG/src/plugins/InstrumentEditorFactory.cpp (revision 4010) > > +++ LS-DEBUG/src/plugins/InstrumentEditorFactory.cpp (working copy) > > @@ -44,6 +44,7 @@ > > std::map<String, InstrumentEditorFactory::InnerFactory*> > > InstrumentEditorFactory::InnerFactories; > > > > bool InstrumentEditorFactory::bPluginsLoaded = false; > > + bool InstrumentEditorFactory::FoundPlugins = false; > > > > std::list<void*> InstrumentEditorFactory::LoadedDLLs; > > > > @@ -287,6 +288,7 @@ > > } > > closedir(hDir); > > #endif > > + InstrumentEditorFactory::FoundPlugins = true; > > return true; > > } > > Wrong assumption. At this point it just *tried* to load plugins. It does > not > mean it was able to actually load any plugin successfully. > > You should rather debug what happens in the loop above. > > for (dirent* pEntry = readdir(hDir); pEntry; pEntry = readdir(hDir)) { > ... > } > > That loops iterares over all files found in the plugin dir and then tries > to > load every file that is actually a DLL file (i.e. filename ending with > ".so"). > > > Index: LS-DEBUG/src/plugins/InstrumentEditorFactory.h > > =================================================================== > > --- LS-DEBUG/src/plugins/InstrumentEditorFactory.h (revision 4010) > > +++ LS-DEBUG/src/plugins/InstrumentEditorFactory.h (working copy) > > @@ -98,6 +98,7 @@ > > static String PluginDirsAsString(); > > static std::vector<String> AvailableEditors(); > > static String AvailableEditorsAsString(); > > + static bool FoundPlugins; > > static std::vector<String> MatchingEditors(String sTypeName, > String > > sTypeVersion); > > static void LoadPlugins(); > > static void ClosePlugins(); > > > > > > _______________________________________________ > Linuxsampler-devel mailing list > Lin...@li... > https://lists.sourceforge.net/lists/listinfo/linuxsampler-devel > |
From: Jan F. <fl...@ze...> - 2021-12-28 07:01:25
|
Christian, Probably more clear I translated the midi messages I send from jOrgan to LSCP: Note on: "SEND CHANNEL MIDI_DATA NOTE_ON 0 60 127" Note off: "SEND CHANNEL MIDI_DATA NOTE_OFF 0 60 0" Instrument/Stop on: "SEND CHANNEL MIDI_DATA CC 0 7 127" Instrument/Stop off: "SEND CHANNEL MIDI_DATA CC 0 1 0" "SEND CHANNEL MIDI_DATA CC 0 7 0" Kind regards, Jan Flikweert -----Original Message----- From: Christian Schoenebeck [mailto:sch...@li...] Sent: maandag 27 december 2021 16:29 To: lin...@li... Subject: Re: [Linuxsampler-devel] midi message fantasia note off On Sonntag, 26. Dezember 2021 22:13:05 CET Jan Flikweert wrote: > Hi, > > I will explain my problem. > > I am working with release samples/sfz. This works good using fantasia. Not > good using jOrgan. jOrgan/Linuxsampler works very good, but without > release. JSampler and QSampler both control the sampler purely via network protocol (called "LSCP"), in this case it is this LSCP command: SEND CHANNEL MIDI_DATA <midi-msg> <sampler-chan> <arg1> <arg2> http://www.linuxsampler.org/api/draft-linuxsampler-protocol.html#rfc.section .6.4.39 > I suppose it has to do with the note_off/note_on messages in > jOrgan. Note on in jorgan is only set 144,set 36, set velocity. Note off is > set 128,set 36,.. and set 176,set 1, set 0 which is cc 1. MIDI note-off is [1]: 1000nnnn 0kkkkkkk 0vvvvvvv MIDI note-on is: 1001nnnn 0kkkkkkk 0vvvvvvv MIDI control change is: 1011nnnn 0ccccccc 0vvvvvvv Where nnnn is the MIDI channel number (0..15) kkkkkkk is the key/note number (0..127) ccccccc is the controller number (0..127) vvvvvvv is velocity (note-on / note-off) or the new controller value (0..127) (control change) Note: - Note-On with velocity 0 means "note-off". - MIDI allows to omit the status byte on subsequent messages, which is called "running status". That's basically just a simple way of data compression [2]. [1] https://www.midi.org/specifications-old/item/table-1-summary-of-midi-message [2] http://midi.teragonaudio.com/tech/midispec/run.htm CU Christian _______________________________________________ Linuxsampler-devel mailing list Lin...@li... https://lists.sourceforge.net/lists/listinfo/linuxsampler-devel |
From: Jan F. <fl...@ze...> - 2021-12-28 06:07:59
|
Christian, Thanks. Your explanation of binary midi is clear to me and is equal to the decimal jOrgan midi. jOrgan uses the LSCP protocol through localhost/8888 to send the .lscp file. jOrgan uses midi protocol through an midiport to toggle note on/off and toggle stops on/off. Fantasia/QSampler use LSCP protocol to toggle note on/off and toggle stops on/off. That works fine in jOrgan, but not using in SFZ trigger=release to play a given release part of a sample. Is this an error of Linuxsampler? How to play a given release part of a sample GIG/SFZ through MIDI? Kind regards, Jan Flikweert -------------------------- -----Original Message----- From: Christian Schoenebeck [mailto:sch...@li...] Sent: maandag 27 december 2021 16:29 To: lin...@li... Subject: Re: [Linuxsampler-devel] midi message fantasia note off On Sonntag, 26. Dezember 2021 22:13:05 CET Jan Flikweert wrote: > Hi, > > I will explain my problem. > > I am working with release samples/sfz. This works good using fantasia. Not > good using jOrgan. jOrgan/Linuxsampler works very good, but without > release. JSampler and QSampler both control the sampler purely via network protocol (called "LSCP"), in this case it is this LSCP command: SEND CHANNEL MIDI_DATA <midi-msg> <sampler-chan> <arg1> <arg2> http://www.linuxsampler.org/api/draft-linuxsampler-protocol.html#rfc.section .6.4.39 > I suppose it has to do with the note_off/note_on messages in > jOrgan. Note on in jorgan is only set 144,set 36, set velocity. Note off is > set 128,set 36,.. and set 176,set 1, set 0 which is cc 1. MIDI note-off is [1]: 1000nnnn 0kkkkkkk 0vvvvvvv MIDI note-on is: 1001nnnn 0kkkkkkk 0vvvvvvv MIDI control change is: 1011nnnn 0ccccccc 0vvvvvvv Where nnnn is the MIDI channel number (0..15) kkkkkkk is the key/note number (0..127) ccccccc is the controller number (0..127) vvvvvvv is velocity (note-on / note-off) or the new controller value (0..127) (control change) Note: - Note-On with velocity 0 means "note-off". - MIDI allows to omit the status byte on subsequent messages, which is called "running status". That's basically just a simple way of data compression [2]. [1] https://www.midi.org/specifications-old/item/table-1-summary-of-midi-message [2] http://midi.teragonaudio.com/tech/midispec/run.htm CU Christian _______________________________________________ Linuxsampler-devel mailing list Lin...@li... https://lists.sourceforge.net/lists/listinfo/linuxsampler-devel |
From: Christian S. <sch...@li...> - 2021-12-27 15:28:47
|
On Sonntag, 26. Dezember 2021 22:13:05 CET Jan Flikweert wrote: > Hi, > > I will explain my problem. > > I am working with release samples/sfz. This works good using fantasia. Not > good using jOrgan. jOrgan/Linuxsampler works very good, but without > release. JSampler and QSampler both control the sampler purely via network protocol (called "LSCP"), in this case it is this LSCP command: SEND CHANNEL MIDI_DATA <midi-msg> <sampler-chan> <arg1> <arg2> http://www.linuxsampler.org/api/draft-linuxsampler-protocol.html#rfc.section.6.4.39 > I suppose it has to do with the note_off/note_on messages in > jOrgan. Note on in jorgan is only set 144,set 36, set velocity. Note off is > set 128,set 36,.. and set 176,set 1, set 0 which is cc 1. MIDI note-off is [1]: 1000nnnn 0kkkkkkk 0vvvvvvv MIDI note-on is: 1001nnnn 0kkkkkkk 0vvvvvvv MIDI control change is: 1011nnnn 0ccccccc 0vvvvvvv Where nnnn is the MIDI channel number (0..15) kkkkkkk is the key/note number (0..127) ccccccc is the controller number (0..127) vvvvvvv is velocity (note-on / note-off) or the new controller value (0..127) (control change) Note: - Note-On with velocity 0 means "note-off". - MIDI allows to omit the status byte on subsequent messages, which is called "running status". That's basically just a simple way of data compression [2]. [1] https://www.midi.org/specifications-old/item/table-1-summary-of-midi-message [2] http://midi.teragonaudio.com/tech/midispec/run.htm CU Christian |
From: Christian S. <sch...@li...> - 2021-12-27 14:40:11
|
On Sonntag, 26. Dezember 2021 21:57:12 CET Andrew C wrote: > *Diff patch for debugging/illustration purposes:* > > Index: LS-DEBUG/src/engines/gig/InstrumentResourceManager.cpp > =================================================================== > --- LS-DEBUG/src/engines/gig/InstrumentResourceManager.cpp (revision > 4010) > +++ LS-DEBUG/src/engines/gig/InstrumentResourceManager.cpp (working > copy) > @@ -216,6 +216,8 @@ > InstrumentEditor* > InstrumentResourceManager::LaunchInstrumentEditor(LinuxSampler::EngineChanne > l* pEngineChannel, instrument_id_t ID, > void* pUserData) throw (InstrumentManagerException) { > const String sDataType = GetInstrumentDataStructureName(ID); > const String sDataVersion = GetInstrumentDataStructureVersion(ID); > + fprintf (stderr, "Data type is %s and data version is %s\n", > sDataType.c_str(), sDataVersion.c_str()); > + fprintf (stderr, "Instrument plugin is %s\n", > InstrumentEditorFactory::AvailableEditorsAsString().c_str()); The output of this was an empty string there, which means the sampler did not load *any* plugin DLL at all. > // find instrument editors capable to handle given instrument > std::vector<String> vEditors = > InstrumentEditorFactory::MatchingEditors(sDataType, > sDataVersion); > @@ -224,10 +226,16 @@ > fprintf(stderr, > "ERROR: There is not any instrument editor registered > to the sampler!\n" > "[Cause: Make sure an instrument editor is installed to > the sampler's plugin dir (%s)]\n", > - InstrumentEditorFactory::PluginDirsAsString().c_str() > - ); > + > InstrumentEditorFactory::PluginDirsAsString().c_str()); > + if (InstrumentEditorFactory::FoundPlugins) { > + fprintf (stderr, > + "We found and registered plugins in %s at startup, but > currently available plugins are:%s \n", > + InstrumentEditorFactory::PluginDirsAsString().c_str(), > + > > InstrumentEditorFactory::AvailableEditorsAsString().c_str() > > + ); > + }; > throw InstrumentManagerException( > - "There is not any instrument editor installed and > registered to the sampler" > + "netcat seems to cause issues." > ); Has nothing to do with netcat. > } > fprintf(stderr, > Index: LS-DEBUG/src/plugins/InstrumentEditorFactory.cpp > =================================================================== > --- LS-DEBUG/src/plugins/InstrumentEditorFactory.cpp (revision 4010) > +++ LS-DEBUG/src/plugins/InstrumentEditorFactory.cpp (working copy) > @@ -44,6 +44,7 @@ > std::map<String, InstrumentEditorFactory::InnerFactory*> > InstrumentEditorFactory::InnerFactories; > > bool InstrumentEditorFactory::bPluginsLoaded = false; > + bool InstrumentEditorFactory::FoundPlugins = false; > > std::list<void*> InstrumentEditorFactory::LoadedDLLs; > > @@ -287,6 +288,7 @@ > } > closedir(hDir); > #endif > + InstrumentEditorFactory::FoundPlugins = true; > return true; > } Wrong assumption. At this point it just *tried* to load plugins. It does not mean it was able to actually load any plugin successfully. You should rather debug what happens in the loop above. for (dirent* pEntry = readdir(hDir); pEntry; pEntry = readdir(hDir)) { ... } That loops iterares over all files found in the plugin dir and then tries to load every file that is actually a DLL file (i.e. filename ending with ".so"). > Index: LS-DEBUG/src/plugins/InstrumentEditorFactory.h > =================================================================== > --- LS-DEBUG/src/plugins/InstrumentEditorFactory.h (revision 4010) > +++ LS-DEBUG/src/plugins/InstrumentEditorFactory.h (working copy) > @@ -98,6 +98,7 @@ > static String PluginDirsAsString(); > static std::vector<String> AvailableEditors(); > static String AvailableEditorsAsString(); > + static bool FoundPlugins; > static std::vector<String> MatchingEditors(String sTypeName, String > sTypeVersion); > static void LoadPlugins(); > static void ClosePlugins(); |
From: Jan F. <fl...@ze...> - 2021-12-26 21:13:11
|
Hi, I will explain my problem. I am working with release samples/sfz. This works good using fantasia. Not good using jOrgan. jOrgan/Linuxsampler works very good, but without release. I suppose it has to do with the note_off/note_on messages in jOrgan. Note on in jorgan is only set 144,set 36, set velocity. Note off is set 128,set 36,.. and set 176,set 1, set 0 which is cc 1. Kind regards, Jan Flikweert From: Andrew C [mailto:cou...@gm...] Sent: zondag 26 december 2021 17:48 To: Jan Flikweert Cc: linuxsampler-devel Subject: Re: [Linuxsampler-devel] midi message fantasia note off Hi Jan, I would imagine it's a simple enough NOTE_OFF event is all. Just to illustrate the code from jlscp's event/MidiDataEvent: ackage org.linuxsampler.lscp.event; /** * A semantic event which indicates that MIDI data has arrived. * @author Grigor Iliev */ public class MidiDataEvent extends java.util.EventObject { public static enum Type { NOTE_ON ("NOTE_ON"), NOTE_OFF ("NOTE_OFF"), CC ("CC"); Andrew. On Sun, Dec 26, 2021 at 11:58 AM Jan Flikweert <fl...@ze...> wrote: Hi all, Which midi messages does Fantasia send for a note-off event after releasing a key on the keyboard from its main screen? I tried with midi-ox but that did not work. Kind regards, Jan Flikweert _______________________________________________ Linuxsampler-devel mailing list Lin...@li... https://lists.sourceforge.net/lists/listinfo/linuxsampler-devel |
From: Andrew C <cou...@gm...> - 2021-12-26 20:57:35
|
Hi Christian, I come bearing diff patches :) I've done a bunch of debugging of this and I'm fairly certain my installation is fine. The latest SVN versions of libgig, linuxsampler and gigedit are the only ones I have on my PC right now. If I type each of the following LSCP commands into the LSCP shell directly, the instrument editor opens fine. Same happens if I open the editor on a loaded instrument through the JSampler GUI. This does not work if netcat (or socat) is used to send the commands to Linuxsampler. For whatever reason, InstrumentEditorFactory::AvailableEditorsAsString().c_str() returns empty in InstrumentResourceManager::LaunchInstrumentEditor when netcat is used and I don't understand why. I understand that when an 'EDIT CHANNEL INSTRUMENT <num>' command is sent, there'll be a check of the datatype and dataversion the instrument reports against the output of matchingeditors(), but it appears it's hit or miss. *LSCP commands: * RESET SET VOLUME 1.0 CREATE MIDI_INPUT_DEVICE JACK SET MIDI_INPUT_DEVICE_PARAMETER 0 PORTS=1 SET VOLUME 1.0 CREATE AUDIO_OUTPUT_DEVICE JACK ACTIVE=TRUE CHANNELS=2 SAMPLERATE=48000 SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 0 NAME='Left' SET AUDIO_OUTPUT_CHANNEL_PARAMETER 0 1 NAME='Right' SET STREAMS 90 REMOVE MIDI_INSTRUMENT_MAP ALL ADD CHANNEL ADD CHANNEL MIDI_INPUT 0 0 0 SET CHANNEL MIDI_INPUT_CHANNEL 0 0 LOAD ENGINE GIG 0 SET CHANNEL VOLUME 0 1.0 SET CHANNEL AUDIO_OUTPUT_DEVICE 0 0 LOAD INSTRUMENT '/home/andrew/Desktop/Samples/Booms/trailerhits.gig' 0 0 SET STREAMS 90 SET VOICES 90 EDIT CHANNEL INSTRUMENT 0 *Sampler output from doing "linuxsampler && cat lscpcommands.lscp | netcat localhost 8888"* LinuxSampler 2.2.0.svn9 Copyright (C) 2003,2004 by Benno Senoner and Christian Schoenebeck Copyright (C) 2005-2021 Christian Schoenebeck Binary built: Dec 24 2021 Detected features: MMX SSE SSE2 Automatic Stacktrace: Off Creating Sampler...OK Registered sampler engines: 'GIG','SF2','SFZ' Registered MIDI input drivers: ALSA,JACK Registered audio output drivers: ALSA,JACK Loading instrument editor plugins...OK *Registered instrument editors: 'gigedit' * Registered internal effect systems: LADSPA no more csLADSPA plugins failed to load DLL: '/usr/lib/ladspa/autotalent.so', cause: /usr/lib/ladspa/autotalent.so: undefined symbol: __exp_finite Registered internal effects: 354 Starting LSCP network server (0.0.0.0:8888)...OK LinuxSampler initialization completed. :-) LSCPServer: Client connection established on socket:4. Unloading instrument editor plugins...OK libjackBufferSizeCallback(1024) jack_port_set_name: deprecated jack_port_set_name: deprecated Starting disk thread...OK EQ support: no Loading gig file '/home/andrew/Desktop/Samples/Booms/trailerhits.gig'...OK Loading gig instrument ('/home/andrew/Desktop/Samples/Booms/trailerhits.gig',0)...OK Caching initial samples...OK Stopping disk thread...OK Starting disk thread...OK EQ support: no Data type is libgig and data version is 4.3.0.svn34Loading instrument editor plugins...OK *Instrument plugin is * *ERROR: There is not any instrument editor registered to the sampler! [Cause: Make sure an instrument editor is installed to the sampler's plugin dir ('/usr/local/lib/linuxsampler/* *plugins')] We found and registered plugins in '/usr/local/lib/linuxsampler/plugins' at startup, but currently available plugins are: netcat seems to cause issues.* *Diff patch for debugging/illustration purposes:* Index: LS-DEBUG/src/engines/gig/InstrumentResourceManager.cpp =================================================================== --- LS-DEBUG/src/engines/gig/InstrumentResourceManager.cpp (revision 4010) +++ LS-DEBUG/src/engines/gig/InstrumentResourceManager.cpp (working copy) @@ -216,6 +216,8 @@ InstrumentEditor* InstrumentResourceManager::LaunchInstrumentEditor(LinuxSampler::EngineChannel* pEngineChannel, instrument_id_t ID, void* pUserData) throw (InstrumentManagerException) { const String sDataType = GetInstrumentDataStructureName(ID); const String sDataVersion = GetInstrumentDataStructureVersion(ID); + fprintf (stderr, "Data type is %s and data version is %s\n", sDataType.c_str(), sDataVersion.c_str()); + fprintf (stderr, "Instrument plugin is %s\n", InstrumentEditorFactory::AvailableEditorsAsString().c_str()); // find instrument editors capable to handle given instrument std::vector<String> vEditors = InstrumentEditorFactory::MatchingEditors(sDataType, sDataVersion); @@ -224,10 +226,16 @@ fprintf(stderr, "ERROR: There is not any instrument editor registered to the sampler!\n" "[Cause: Make sure an instrument editor is installed to the sampler's plugin dir (%s)]\n", - InstrumentEditorFactory::PluginDirsAsString().c_str() - ); + InstrumentEditorFactory::PluginDirsAsString().c_str()); + if (InstrumentEditorFactory::FoundPlugins) { + fprintf (stderr, + "We found and registered plugins in %s at startup, but currently available plugins are:%s \n", + InstrumentEditorFactory::PluginDirsAsString().c_str(), + InstrumentEditorFactory::AvailableEditorsAsString().c_str() + ); + }; throw InstrumentManagerException( - "There is not any instrument editor installed and registered to the sampler" + "netcat seems to cause issues." ); } fprintf(stderr, Index: LS-DEBUG/src/plugins/InstrumentEditorFactory.cpp =================================================================== --- LS-DEBUG/src/plugins/InstrumentEditorFactory.cpp (revision 4010) +++ LS-DEBUG/src/plugins/InstrumentEditorFactory.cpp (working copy) @@ -44,6 +44,7 @@ std::map<String, InstrumentEditorFactory::InnerFactory*> InstrumentEditorFactory::InnerFactories; bool InstrumentEditorFactory::bPluginsLoaded = false; + bool InstrumentEditorFactory::FoundPlugins = false; std::list<void*> InstrumentEditorFactory::LoadedDLLs; @@ -287,6 +288,7 @@ } closedir(hDir); #endif + InstrumentEditorFactory::FoundPlugins = true; return true; } Index: LS-DEBUG/src/plugins/InstrumentEditorFactory.h =================================================================== --- LS-DEBUG/src/plugins/InstrumentEditorFactory.h (revision 4010) +++ LS-DEBUG/src/plugins/InstrumentEditorFactory.h (working copy) @@ -98,6 +98,7 @@ static String PluginDirsAsString(); static std::vector<String> AvailableEditors(); static String AvailableEditorsAsString(); + static bool FoundPlugins; static std::vector<String> MatchingEditors(String sTypeName, String sTypeVersion); static void LoadPlugins(); static void ClosePlugins(); |
From: Andrew C <cou...@gm...> - 2021-12-26 16:48:24
|
Hi Jan, I would imagine it's a simple enough NOTE_OFF event is all. Just to illustrate the code from jlscp's event/MidiDataEvent: ackage org.linuxsampler.lscp.event; /** * A semantic event which indicates that MIDI data has arrived. * @author Grigor Iliev */ public class MidiDataEvent extends java.util.EventObject { public static enum Type { NOTE_ON ("NOTE_ON"), NOTE_OFF ("NOTE_OFF"), CC ("CC"); Andrew. On Sun, Dec 26, 2021 at 11:58 AM Jan Flikweert <fl...@ze...> wrote: > Hi all, > > > > Which midi messages does Fantasia send for a note-off event after > releasing a key on the keyboard from its main screen? > > > > I tried with midi-ox but that did not work. > > > > Kind regards, > > > > Jan Flikweert > _______________________________________________ > Linuxsampler-devel mailing list > Lin...@li... > https://lists.sourceforge.net/lists/listinfo/linuxsampler-devel > |
From: Jan F. <fl...@ze...> - 2021-12-26 11:57:50
|
Hi all, Which midi messages does Fantasia send for a note-off event after releasing a key on the keyboard from its main screen? I tried with midi-ox but that did not work. Kind regards, Jan Flikweert |
From: Quick K. <hep...@ya...> - 2021-12-24 17:56:09
|
<div>Relevant lines from build log:</div><div>-------------------------------</div><div>libtool: compile: loongarch64-linux-gnu-g++ -std=gnu++14 -DHAVE_CONFIG_H -I. -I../.. -Wreturn-type -ffast-math -g -O2 -pthread -MT RTMath.lo -MD -MP -MF .deps/RTMath.Tpo -c RTMath.cpp -fPIC -DPIC -o .libs/RTMath.o<br />RTMath.cpp:77:8: error: #error "Sorry, LinuxSampler lacks time stamp code for your system." <br /></div><div> # error "Sorry, LinuxSampler lacks time stamp code for your system." <br /></div><div> ^~~~~ <br /></div><div>RTMath.cpp:78:8: error: #error "Please report this error and the CPU you are using to the LinuxSampler developers mailing list!" <br /></div><div> # error "Please report this error and the CPU you are using to the LinuxSampler developers mailing list!" <br /></div><div> ^~~~~ <br /></div><div><br /></div><div>-------------------</div><div>version 4010</div><div><br /></div><div>model: Loongson-3A5000LL</div><div><br /></div><div>Thanks,</div><div>Quick Kormos<br /></div> |