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: <le...@gr...> - 2004-05-25 11:24:40
|
Le 25 mai 04, =E0 12:59, be...@ga... a =E9crit : > hi Stephane, > ah so basically the PPC asm code was wrong ? The PPC assembler cannot be used this way. On MacOSX the way to go is=20 to use mach_absolute_time. > > Regarding the no free voice, do you get them only at the > end of the song ? (afaik at the end it peaks to over 128voice). > Try to increase max streams and max voices to 256 and rerun the chopin=20= > midi. Already done (256) > > please watch CPU load (using top or whatever) and report peaks here. > I'm very curious. > On an athlon 2000 I get peaks of about 50-60% CPU. The DoubleToInt code is not the problem. Most of the time is used in=20 Voice::Interpolate. I already made some optimizations but still not get enough CPU !! Now most of the time is used in int to float conversion : float xm1_r =3D pSrc[pos_int+1]; And i see that the same sample is converted several times so the code=20 could be improved. > > Christian: did you already open the CVS write account for Stephane so=20= > that > he can commit his stuff ? > > let us know please > cheers, > Benno > > Already done Stephane |
|
From: <be...@ga...> - 2004-05-25 10:59:45
|
hi Stephane, ah so basically the PPC asm code was wrong ? Regarding the no free voice, do you get them only at the end of the song ? (afaik at the end it peaks to over 128voice). Try to increase max streams and max voices to 256 and rerun the chopin midi. please watch CPU load (using top or whatever) and report peaks here. I'm very curious. On an athlon 2000 I get peaks of about 50-60% CPU. Christian: did you already open the CVS write account for Stephane so that he can commit his stuff ? let us know please cheers, Benno Scrive Stéphane Letz <le...@gr...>: > The note relase problem is solved. The EventGenerator::CreateTimeStamp > function was not implemeneted correcly > > > I can now play the test chopin midifile, but still get some "No free > voice!" message and saturate the CPU. I'll try tpo profile things now > > > Stephane ------------------------------------------------- This mail sent through http://www.gardena.net |
|
From: <le...@gr...> - 2004-05-25 09:11:29
|
The note relase problem is solved. The EventGenerator::CreateTimeStamp function was not implemeneted correcly I can now play the test chopin midifile, but still get some "No free voice!" message and saturate the CPU. I'll try tpo profile things now Stephane |
|
From: <le...@gr...> - 2004-05-25 07:32:27
|
Le 24 mai 04, =E0 22:52, Christian Schoenebeck a =E9crit : > Es geschah am Montag, 24. Mai 2004 20:57 als St=E9phane Letz schrieb: >> Hi, >> >> I have a Note release problm on MacOSX : the note does not end when=20= >> the >> keyoff is received. Here is the debug output > > Is the Voice::Kill() method actually called? Place a debug message=20 > there to > check that. I'm assuming some of the common classes are not yet = working > correctly for OSX. > > CU > Christian > > Yes Voice::Kill is called but long after the keyoff has been received=20 (several second later) : Disk Thread: new stream ordered Disk voice launched (cached samples: 32768, total Samples: 518144,=20 MaxRAMPos: 30720, RAMLooping: no) PreAttack=3D0, AttackLength=3D0, AttackCoeff=3D0.000000,=20 Decay1Coeff=3D0.000000, Decay2Coeff=3D0.000000, ReleaseLength=3D22050,=20= ReleaseCoeff=3D-0.000313 PreAttack=3D0, AttackLength=3D0, AttackCoeff=3D0.000000,=20 Decay1Coeff=3D0.000000, Decay2Coeff=3D0.000000, ReleaseLength=3D88199,=20= ReleaseCoeff=3D-0.000078 Depth=3D1072693248, DecayTime=3D0.000000 new Stream launched by disk thread (OrderID:5,StreamHandle:5) Disk Thread: been asked if stream already created, OrderID=3D5 (yes=20 created) Voice::Kill Disk Thread: stream deletion ordered Key has no more voices now Stephane |
|
From: Juan L. <co...@re...> - 2004-05-24 22:41:19
|
for the record, i guess it may already implemented but just in case.. (i've seen this in a couple of synths) remember that noteoff is sent either using the midi noteoff command or a midi noteon command with zero velocity... cheers! reduz |
|
From: Christian S. <chr...@ep...> - 2004-05-24 20:52:36
|
Es geschah am Montag, 24. Mai 2004 20:57 als St=E9phane Letz schrieb: > Hi, > > I have a Note release problm on MacOSX : the note does not end when the > keyoff is received. Here is the debug output Is the Voice::Kill() method actually called? Place a debug message there to= =20 check that. I'm assuming some of the common classes are not yet working=20 correctly for OSX. CU Christian |
|
From: <le...@gr...> - 2004-05-24 18:58:33
|
Hi, I have a Note release problm on MacOSX : the note does not end when the keyoff is received. Here is the debug output Stephane Last login: Mon May 24 20:54:02 on ttyp3 Welcome to Darwin! macsteph:~ letz$ cd /Volumes/Document1/Developpement/ProjectsCVS/LinuxSamplerCVS/ linuxsampler/build macsteph:/Volumes/Document1/Developpement/ProjectsCVS/LinuxSamplerCVS/ linuxsampler/build letz$ ./LinuxSampler Starting network server...LSCPServer: Server running. OK LinuxSampler initialization completed. LSCPServer: Client connection established. LSCPServer: AddChannel() LSCPServer::AnswerClient(ReturnMessage=OK[0] )LSCPServer: SetAudioOutputType(AudioOutputType=1, SamplerChannel=0) conditionserver:Push() requesting change to 1 conditionserver:Pop() change requested LSCPServer::AnswerClient(ReturnMessage=OK )LSCPServer: SetMIDIInputType(MidiInputType=0, SamplerChannel=0) conditionserver:Pop() condition now: 1 LSCPServer::AnswerClient(ReturnMessage=OK )LSCPServer: LoadEngine(EngineName=gig,SamplerChannel=0) SamplerChannel: Loading engine...ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd dddddddddddddddddddddddddddddddddddddddddddddddddStarting disk thread...Disk thread running OK OK LSCPServer::AnswerClient(ReturnMessage=OK )LSCPServer: LoadInstrument(Filename=/Users/letz/ FreePiano.gig,Instrument=0,SamplerChannel=0) gig::Engine: disabling conditionserver:Push() requesting change to 1 gig::Engine warning: Timeout waiting to disable engine. conditionserver:Pop() change requested conditionserver:Pop() condition now: 1 Disk thread running Loading gig file '/Users/letz/FreePiano.gig'...OK Loading gig instrument...OK Caching initial samples...CCCCCCCCCCCCCCCCCCCCCCCCCCCCOK gig::Engine: enabling conditionserver:Push() requesting change to 0 gig::Engine: enabled (val=1) LSCPServer::AnswerClient(ReturnMessage=OK )LSCPServer: SetVolume(Volume=1.000000, SamplerChannel=0) LSCPServer::AnswerClient(ReturnMessage=OK )conditionserver:Pop() change requested conditionserver:Pop() condition now: 0 Disk Thread: new stream ordered Disk voice launched (cached samples: 32768, total Samples: 518144, MaxRAMPos: 30720, RAMLooping: no) PreAttack=0, AttackLength=0, AttackCoeff=0.000000, Decay1Coeff=0.000000, Decay2Coeff=0.000000, ReleaseLength=22050, ReleaseCoeff=-0.000313 PreAttack=0, AttackLength=0, AttackCoeff=0.000000, Decay1Coeff=0.000000, Decay2Coeff=0.000000, ReleaseLength=88199, ReleaseCoeff=-0.000078 Depth=1072693248, DecayTime=0.000000 new Stream launched by disk thread (OrderID:1,StreamHandle:1) Disk Thread: been asked if stream already created, OrderID=1 (yes created) Key has no more voices now |
|
From: Christian S. <chr...@ep...> - 2004-05-24 13:18:59
|
Hi! The LinuxSampler CVS repository is now available for online browsing via viewcvs on: http://cvs.linuxsampler.org CU Christian |
|
From: Christian S. <chr...@ep...> - 2004-05-23 20:49:58
|
Hi! I recently discussed with Vladimir about the latest protocol draft and whe came to the decision that it would be better to allow more than one instance of a driver type. This makes e.g. sense for the Alsa driver, where you could use two Alsa driver instances for two different sound cards. There's also a solution for this scenario with only one allowed driver instance, but it's not that logical we think. Downside of this change is that we also have to remove the "SET CHANNEL MIDI_INPUT_TYPE" and "SET CHANNEL AUDIO_OUTPUT_TYPE" commands and replace it by commands which set the driver connection for each sampler channel by using a number ID, means every created driver instance gets a unique number which we can use to connect the device with sampler channels. So, is somebody against this change? Vladimir thinks the "FIX" parameter has a bad, ambiguous name. Anybody a better idea how to name this parameter? Another thing Vladimir suggested was to define a parameter / command to configure driver internal bindings, like connections between Alsa (MIDI) sequencer clients or connections between JACK (audio) clients. But I didn't do that in the draft, because such driver internal bindings are not supported by every MIDI / audio system and instead I proposed (see the examples in the draft) just to use a driver specific, additional parameter for this, which is not defined in the LSCP document, but obtained by the frontend at runtime with all possible values for this parameter (means e.g. all possible Alsa seq clients / Jack audio clients) which the GUI frontend could then just list in a dropdown list. What's your opinion? And btw, some examples I wrote in the draft are simply wrong, sorry. I have to fix them. Something I forgot Vladimir? CU Christian |
|
From: Christian S. <chr...@ep...> - 2004-05-21 20:30:29
|
Es geschah am Freitag, 21. Mai 2004 18:19 als Mark Knecht schrieb: > HELP!! No responses! > > Am I the only one who cannot get this to work, or am I the only one > trying right now? > > I've tested LS With both Rosegarden AND vkeybd (from takashi-san's web > site) on MIDI channels other than channel 1. I cannot get LS from CVS > last week to work. > > HELP! Sorry, I fear I can't look for that this weekend, maybe somebody else? Vladimir? Won't be a big deal I guess. CU Christian |
|
From: Mark K. <mk...@co...> - 2004-05-21 16:19:14
|
HELP!! No responses! Am I the only one who cannot get this to work, or am I the only one trying right now? I've tested LS With both Rosegarden AND vkeybd (from takashi-san's web site) on MIDI channels other than channel 1. I cannot get LS from CVS last week to work. HELP! Mark Knecht wrote: > Hi, > I've been a bit help up by my inability to get LS to respond to > anything other than MIDI channel 1. Is there a trick to this? > > In a telnet session I use > > ADD CHANNEL > SET CHANNEL AUDIO_OUTPUT_TYPE 0 JACK > SET CHANNEL MIDI_INPUT_TYPE 0 ALSA > SET CHANNEL MIDI_INPUT_CHANNEL 0 1 > LOAD ENGINE gig 0 > LOAD INSTRUMENT /home/mark/data/samples/Gigs/Wizzo/Ambience Kit XXL.gig 0 0 > > And start Rosegarden playing on MIDI channel 1. I get audio. > > I then execute > > SET CHANNEL MIDI_INPUT_CHANNEL 0 10 > > change RG to channel 10 and I get no audio. > > I then set both back to channel 1 and get audio again. > > Am I missing something? > > Help! > > thanks, > Mark > > > ------------------------------------------------------- > This SF.Net email is sponsored by: Oracle 10g > Get certified on the hottest thing ever to hit the market... Oracle 10g. > Take an Oracle 10g class now, and we'll give you the exam FREE. > http://ads.osdn.com/?ad_id=3149&alloc_id=8166&op=click > _______________________________________________ > Linuxsampler-devel mailing list > Lin...@li... > https://lists.sourceforge.net/lists/listinfo/linuxsampler-devel > > |
|
From: Mark K. <mk...@co...> - 2004-05-20 20:21:17
|
Christian Schoenebeck wrote: > Es geschah am Donnerstag, 20. Mai 2004 20:14 als Mark Knecht schrieb: > >>Hi, >> I'm probably missing it, but what is the correct server command to >>attach the audio outputs of LS to alsa_pcm:playback_1/2 when starting LS? > > > It's not you who's missing something, it's actually missing. :) > It's part of the new audio / MIDI driver configuration draft, which is not yet > implemented, but as soon as the new protocol extension draft is accepted by > everybody. > > CU > Christian > Thanks Christian. I can wait for you guys to come to agreement on this new rev. Probably of more interest right now is whether multi-voice operation is actually supported as I cannot get operation on any MIDI channel other than #1. (so far...) - Mark |
|
From: Christian S. <chr...@ep...> - 2004-05-20 18:24:00
|
Es geschah am Donnerstag, 20. Mai 2004 20:14 als Mark Knecht schrieb: > Hi, > I'm probably missing it, but what is the correct server command to > attach the audio outputs of LS to alsa_pcm:playback_1/2 when starting LS? It's not you who's missing something, it's actually missing. :) It's part of the new audio / MIDI driver configuration draft, which is not yet implemented, but as soon as the new protocol extension draft is accepted by everybody. CU Christian |
|
From: Mark K. <mk...@co...> - 2004-05-20 18:14:21
|
Hi,
I'm probably missing it, but what is the correct server command to
attach the audio outputs of LS to alsa_pcm:playback_1/2 when starting LS?
Thanks,
Mark
|
|
From: Mark K. <mk...@co...> - 2004-05-20 18:01:56
|
Hi,
I've been a bit help up by my inability to get LS to respond to
anything other than MIDI channel 1. Is there a trick to this?
In a telnet session I use
ADD CHANNEL
SET CHANNEL AUDIO_OUTPUT_TYPE 0 JACK
SET CHANNEL MIDI_INPUT_TYPE 0 ALSA
SET CHANNEL MIDI_INPUT_CHANNEL 0 1
LOAD ENGINE gig 0
LOAD INSTRUMENT /home/mark/data/samples/Gigs/Wizzo/Ambience Kit XXL.gig 0 0
And start Rosegarden playing on MIDI channel 1. I get audio.
I then execute
SET CHANNEL MIDI_INPUT_CHANNEL 0 10
change RG to channel 10 and I get no audio.
I then set both back to channel 1 and get audio again.
Am I missing something?
Help!
thanks,
Mark
|
|
From: Christian S. <chr...@ep...> - 2004-05-20 10:42:42
|
Es geschah am Donnerstag, 20. Mai 2004 01:43 als Rui Nuno Capela schrieb: > Hi Christian, > > > Have you already read my proposal regarding MIDI and audio driver > > configuration via LSCP? I would like to know if agree to it or if you > > don't like it. > > Yes I've read it already, and still digesting it :P > > As far as I read, all seems pretty reasonable. FWIW you'll get my vote. > > But one question comes to mind: are the old/previous audio and midi > related command semantics to be kept untouched? That is, for audio types > ALSA and JACK and for MIDI type ALSA, can we stay with the older > specification? Sure that it implies the assumption of some "factory" > defaults, when realizing the corresponding audio and/or MIDI drivers. I don't know exactly what you mean. If you mean the "SET CHANNEL AUDIO_OUTPUT_TYPE" and "SET CHANNEL MIDI_INPUT_TYPE" commands, then yes, nothing has changed there and will not change, but LinuxSampler will then just use default settings for the drivers, when they're not already created / loaded (thus e.g. just pick the first soundcard for Alsa). But you should better obtain the names of the drivers by using the "GET AVAILABLE_AUDIO_OUTPUT_TYPES" and "GET AVAILABLE_MIDI_INPUT_TYPES" commands, then it even works for the new CoreMIDI driver and everything that will come (e.g. ASIO) without having you to worry to update the GUI for the new drivers. > Another goes to the AUDIO_OUTPUT_CHANNEL channel command, which I think > only resolves to the new configuration possibilities. Other is > MIDI_INPUT_PORT that ceases to be a string and now maps to a number. OK. Yes, "SET AUDIO_OUTPUT_CHANNEL" now takes 3 arguments instead of the old one which took 2. With that command you can now individually route every single output of a sampler channel. E.g.: Engine Audio Output Device 0 -> 0 1 -> 0 2 -> 9 3 -> 5 (assuming a sampler engine with 4 audio outputs and a sound device with 10 audio output channels) And MIDI_INPUT_PORT is now the number of an (virtual) MIDI port of an MIDI driver. The advantage is that this is an driver independent solution. > Don't know if this is all, but it's all I could get for now, Have you some > other hint? Ok, just a few words about the driver configuration idea. The idea was that there will be drivers soon for various platforms and to avoid that you have to hard code and create widgets for all of them, where you even might not be able to test it, because you might not have Windows, Solaris and the various drivers for all kind of platforms or it would just take too much time to test them for all platforms, I thought it would be a better idea to obtain all driver informations at runtime. Beside that it might also be possible that we have to change which parameters are available for drivers (e.g. because Alsa 2.0 might have made a big change in its internal piloshophy). Here a little scenario for your GUI to make it a bit more clear... The user wants to create an audio output device manually in your GUI, because he doesn't want to use the default settings. So he clicks on "Create audio output device" or something. You ask LS what drivers are available: C: "GET AVAILABLE_AUDIO_OUTPUT_TYPES" S: "ALSA,JACK" And then you obtain the description about these drivers: C: "GET AUDIO_OUTPUT_TYPE INFO ALSA" S: "DESCRIPTION: Advanced Linux Sound Architecture" "VERSION: 1.0" "PARAMETERS: CHANNELS,SAMPLERATE,ACTIVE,FRAGMENTS,FRAGMENTSIZE,CARD" and you do the same for JACK and you can now show the user the descriptions for these drivers and give him a dropdown list or someghing to let him select one of those two. The user selects ALSA and so you order informations about all available driver parameters for audio output driver ALSA: C: "GET AUDIO_OUTPUT_TYPE_PARAMETER CHANNELS" S: "DESCRIPTION: desired amount of audio output channels" "MANDATORY: false" "FIX: false" "MULTIPLICITY: false" "DEFAULT: 2" C: "GET AUDIO_OUTPUT_TYPE_PARAMETER SAMPLERATE" S: "DESCRIPTION: output sample rate (in Hz)" "MANDATORY: false" "FIX: true" "MULTIPLICITY: false" "DEPENDS: CARD" "DEFAULT: 44100" C: "GET AUDIO_OUTPUT_TYPE_PARAMETER ACTIVE" S: "DESCRIPTION: if output device is enabled to output sound" "MANDATORY: false" "FIX: false" "MULTIPLICITY: false" "DEFAULT: true" C: "GET AUDIO_OUTPUT_TYPE_PARAMETER FRAGMENTS" S: "DESCRIPTION: number of periods / fragments" "MANDATORY: false" "FIX: true" "MULTIPLICITY: false" "DEPENDS: CARD" "DEFAULT: 2" C: "GET AUDIO_OUTPUT_TYPE_PARAMETER FRAGMENTSIZE" S: "DESCRIPTION: size of each audio fragment / period (in sample points)" "MANDATORY: false" "FIX: true" "MULTIPLICITY: false" "DEPENDS: CARD" "DEFAULT: 44100" C: "GET AUDIO_OUTPUT_TYPE_PARAMETER CARD" S: "DESCRIPTION: audio card to use" "MANDATORY: false" "FIX: true" "MULTIPLICITY: false" "DEFAULT: '1,0'" "POSSIBILITIES: '1,0','2,0','2,1'" So you now show him a new dialog and give him fields for the 6 Alsa paramters (CHANNELS,SAMPLERATE,ACTIVE,FRAGMENTS,FRAGMENTSIZE,CARD) and fill the fields with the default values (if returned by LSCP). Parameter CARD delivers possible, allowed values. So would create a dropdown list for this parameter with the allowed parameters. And as none of the 6 paramters are declared as mandatory, as you can see above, you can also enable the accept button, so the user could already create the device. Now the user selects the sound card '2,0' and you resend the 6 commands above, but this time you let LS know that the user wants to use the sound card '2,0', so you just add that information to the end of the commands: C: "GET AUDIO_OUTPUT_TYPE_PARAMETER CHANNELS CARD='2,0'" S: "DESCRIPTION: desired amount of audio output channels" "MANDATORY: false" "FIX: false" "MULTIPLICITY: false" "DEFAULT: 2" C: "GET AUDIO_OUTPUT_TYPE_PARAMETER SAMPLERATE CARD='2,0'" S: "DESCRIPTION: output sample rate (in Hz)" "MANDATORY: false" "FIX: true" "MULTIPLICITY: false" "DEPENDS: CARD" "DEFAULT: 44100" "RANGE_MIN: 22050" "RANGE_MAX: 96000" C: "GET AUDIO_OUTPUT_TYPE_PARAMETER ACTIVE CARD='2,0'" S: "DESCRIPTION: if output device is enabled to output sound" "MANDATORY: false" "FIX: false" "MULTIPLICITY: false" "DEFAULT: true" C: "GET AUDIO_OUTPUT_TYPE_PARAMETER FRAGMENTS CARD='2,0'" S: "DESCRIPTION: number of periods / fragments" "MANDATORY: false" "FIX: true" "MULTIPLICITY: false" "DEPENDS: CARD" "DEFAULT: 2" "POSSIBILITIES: 2,3 C: "GET AUDIO_OUTPUT_TYPE_PARAMETER FRAGMENTSIZE CARD='2,0'" S: "DESCRIPTION: size of each audio fragment / period (in sample points)" "MANDATORY: false" "FIX: true" "MULTIPLICITY: false" "DEPENDS: CARD" "DEFAULT: 44100" C: "GET AUDIO_OUTPUT_TYPE_PARAMETER CARD CARD='2,0'" S: "DESCRIPTION: audio card to use" "MANDATORY: false" "FIX: true" "MULTIPLICITY: false" "DEFAULT: '1,0'" "POSSIBILITIES: '1,0','2,0','2,1'" So now the output has changed a bit, because now the driver can determine what settings are supported by the sound card. E.g you see, sample rate is supported by the card in the range of 22050 - 96000 Hz, number of possible fragments is either 2 or 3, so you offer now a dropdown list for the fragments parameter. The user will now set the other parameters and with every parameter he set, you repeat the last step, means you resend the 6 commands but add the information about what parameters are desired by the user: C: "GET AUDIO_OUTPUT_TYPE_PARAMETER CHANNELS CARD='2,0' FRAGMENTS=2 ..." ... Finally the user clicks the 'accept' button and the audio output device for Alsa will be created by the GUI by sending e.g. C: "CREATE AUDIO_OUTPUT_DEVICE ALSA CARD='2,0' FRAGMENTS=2 SAMPLERATE=96000" S: "OK" Creation of a new audio output device is now completed. Creating MIDI input devices is pretty much the same, so I ommit to make also a scenario for this now. Configuring already created audio output devices: in your GUI you will (hopefully) show all devices that are already created. But instead of *remembering* what drivers the user created with the GUI you should use the respective LSCP command, because devices might also be created on another way (e.g. by another GUI, from another host, by a telnet connection or via LSCP script), so you send: C: "GET AUDIO_OUTPUT_DEVICES" S: "ALSA" So you show the Alsa device (and its channels with the names of these channels) in your GUI and show somehow if the device is enabled or disabled (parameter "ACTIVE", which is supported by all drivers). The use might than just double click on the device and you show all current settings in a dialog or something, but for this you have to retrieve current settings of device "ALSA": C: "GET AUDIO_OUTPUT_DEVICE INFO ALSA" S: "CHANNELS: 2" "SAMPLERATE: 96000" "ACTIVE: true" "FRAGMENTS: 2" "FRAGMENTSIZE: 128" "CARD: '2,0'" Again you can use the "GET AUDIO_TYPE_PARAMETER" command to get informations about each parameter and show the description for each one. And whats also important: every parameter that is declared as fixed (FIX: true) cannot be altered now that the device is already created. So you would make such fields uneditable, grey or something (this accounts for Alsa's parameters CARD, FRAGMENTS, FRAGMENTSIZE and SAMPLERATE for example, as you can see from the output). Again you would display dropdown lists for parameters with "POSSIBILITES" defined, etc. The user now alters the fields for parameter ACTIVE and parameter CHANNELS and clicks 'accept' and the GUI will send these commands: C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER ALSA ACTIVE=false" S: "OK" (this disabled the output device) C: "SET AUDIO_OUTPUT_DEVICE_PARAMETER ALSA CHANNELS=4" S: "OK" (this created 2 new audio channels) Finally just a few words about the audio channels. As said it would be nice to display all audio channels for each audio device. Maybe you place driver configuration in an extra window or tab or something or even better make the devices unfoldable like usual in tree views. Every audio channel can be given an arbitrary text as name and it would be nice if you distinguis between mix channels and real channels. Just use another icon or something. Again: a mix channel doesn't have its own physical output channel, instead its just a fake channel that is acutally routed to one of the available real channels. So there should also be a way in the GUI to set to which real channel a mix channel will be routed to and note: audio channels might also have driver dependent parameters, so you have also have to get these infromations via LSCP, but thats easier than the device parameters, because channel paramters are only altered when the device is already created, so I gess I can omit to describe it here in detail. MIDI channels can also be named (but there are of course no MIDI mix channels), but they also migh provide driver dependent extra parameters (e.g. bindings to other clients for the Alsa MIDI driver, where you would show a dropdown list with all Alsa seq clients which you get via LSCP). So I guess this enough for the moment, let me know if there's something unclear or you have other suggestions. CU Christian |
|
From: Christian S. <chr...@ep...> - 2004-05-19 21:12:18
|
Es geschah am Mittwoch, 19. Mai 2004 18:18 als be...@ga... schrieb: > The voice counter on the console is not active anymore in this version of > LS so I'm not sure what would be currently the easiest way to restore it. > Christian any hints ? Sure, just iterate through the sampler channels and sum up the voice count of each sampler engine (see src/Sampler.h and src/engines/common/Engine.h for details). CU Christian |
|
From: Christian S. <chr...@ep...> - 2004-05-19 21:04:30
|
Es geschah am Mittwoch, 19. Mai 2004 18:55 als Mark Knecht schrieb: > Christian Schoenebeck wrote: > > Again, this is only a suggestion so far. Critics, suggestions, > > improvements always appreciated! > > Hi Christian, > Probably not the first comment you wanted, but this document does > not print well on my HP printer. It gets cut off on the left here and > there. > > Can you adjust your margins a bit for your next revision? Yeah, I will prepare a plain text version anyway. CU Christian |
|
From: Mark K. <mk...@co...> - 2004-05-19 16:55:10
|
Christian Schoenebeck wrote:
>
> Again, this is only a suggestion so far. Critics, suggestions, improvements
> always appreciated!
>
Hi Christian,
Probably not the first comment you wanted, but this document does
not print well on my HP printer. It gets cut off on the left here and there.
Can you adjust your margins a bit for your next revision?
Thanks,
Mark
|
|
From: <be...@ga...> - 2004-05-19 16:18:04
|
Scrive Stéphane Letz <le...@gr...>:
>
> It is working now. The crask problem was due my virtual keybord sending=20=
>
> wrong pitches (like 255...) that make the sampler crash. Now is works.=20=
>
> But it seems that polyphonie is limited.. i get "No free voice!"=20
> message very rapidly and distorted sound.
Ok a few hints about polyphony and distorted sound:
increase polyphony to 128 voices by doing the following:
in: engines/gig/Engine.h
#define MAX_AUDIO_VOICES 128
in: engines/gig/DiskThread.h
#define MAX_INPUT_STREAMS 128
64 voices is too low, at the next CVS commit these limits should be raised
to 128 voices otherwise many piano pieces like the one I posted don't sound
well since LS does not support voice stealing yet.
As for the distorted sound the problem is all voices are mixed without
attenuation and the LSCP volume command does not work so use this hack:
in: engines/gig/Voice.cpp , line around 187
you find this:
Volume = pDimRgn->GetVelocityAttenuation(pNoteOnEvent->Velocity) / 32768.0f;
increase the 32768.0f division factor and set it 4 times a high so
the line should become
Volume = pDimRgn->GetVelocityAttenuation(pNoteOnEvent->Velocity) / 131072.0f;
That way you have 12dB of headroom when mixing.
Stephane you told me that LS uses quite much CPU on your Mac and you
told me on IRC it could be the float to int problem as we have on x86.
As I told you you must modify
common/RTMath.h
inline static int DoubleToInt(double f) {
#if ARCH_X86
int i;
__asm__ ("fistl %0" : "=m"(i) : "st"(f - 0.5) );
return i;
#else
return (int) f;
#endif // ARCH_X86
}
add an ARCH_PPC or whathever
and then try to use the asm instruction you told me.
It should help alot.
or you can try to replace
return (int) f;
with:
return lrintf(f);
(which should be almost as efficient as the asm instruction
but I guess with the asm instruction performance is a bit better as happens on x86.
The voice counter on the console is not active anymore in this version of LS
so I'm not sure what would be currently the easiest way to restore it.
Christian any hints ?
Anyway to test the performance of LS with and without the optimized RTMath
you could do the following.
load the freepiano.gig and then construct a midi file that triggers 30
(different) notes and then sustains them for let's say 10-20 secs.
Then simply send that midi file to LS and see how much CPU it uses.
then compile the optimized RTMath and see how much it gets faster.
Let us know please and report your findings here. (including the % speedup you
get with
the optimized RTMath etc).
cheers,
Benno
-------------------------------------------------
This mail sent through http://www.gardena.net
|
|
From: <le...@gr...> - 2004-05-19 13:40:19
|
Le 19 mai 04, =E0 15:10, be...@ga... a =E9crit : > Hi Stephane, > perhaps the bug is related to the fact that the > thread needs to be detached ? > > try this: > in Thread.h add this to the private variables > pthread_attr_t pthread_attr; > > > in Thread.cpp > int Thread::SignalStartThread() > > try to add two calls before the pthread_create() > > pthread_attr_init(&pthread_attr); > pthread_attr_setdetachstate(&pthread_attr, PTHREAD_CREATE_DETACHED); > > and then just pass it to pthread_create call > > int res =3D pthread_create(&this->__thread_id, &pthread_attr,=20 > __pthread_launcher, > this); > > For correctnes this will be needed anyway in the Linux version too. > (problems happen only when you create hundreds of threads that are=20 > created > with the default attrs (PTHREAD_JOINABLE) because if the parent thread > cancels the child threads the kernel still maintains a table of those > threads since they are not detached, and after you created many = threads > the system refuses to create new threads. > This does not happen in LinuxSampler since it creates only a few=20 > threads > but I discovered this the hard way in a high traffic webcam streaming=20= > server I > wrote which refused to accept new clients after a 30min or so :) Ok Thanks. I found a simple way to solve the problem for now. And maybe i'll wait for your code to be commited. > > As for the infinite loading, it's perhaps some libgig problem ? > Try to upper the debuglevel in LS > edit common/global.h > set > #define LS_DEBUG_LEVEL > to 4 > > or better as christian said try to use libgig directly > > Its working now. The crask problem was due It is working now. The crask problem was due my virtual keybord sending=20= wrong pitches (like 255...) that make the sampler crash. Now is works.=20= But it seems that polyphonie is limited.. i get "No free voice!"=20 message very rapidly and distorted sound. Stephane |
|
From: <be...@ga...> - 2004-05-19 13:10:41
|
Hi Stephane, perhaps the bug is related to the fact that the thread needs to be detached ? try this: in Thread.h add this to the private variables pthread_attr_t pthread_attr; in Thread.cpp int Thread::SignalStartThread() try to add two calls before the pthread_create() pthread_attr_init(&pthread_attr); pthread_attr_setdetachstate(&pthread_attr, PTHREAD_CREATE_DETACHED); and then just pass it to pthread_create call int res = pthread_create(&this->__thread_id, &pthread_attr, __pthread_launcher, this); For correctnes this will be needed anyway in the Linux version too. (problems happen only when you create hundreds of threads that are created with the default attrs (PTHREAD_JOINABLE) because if the parent thread cancels the child threads the kernel still maintains a table of those threads since they are not detached, and after you created many threads the system refuses to create new threads. This does not happen in LinuxSampler since it creates only a few threads but I discovered this the hard way in a high traffic webcam streaming server I wrote which refused to accept new clients after a 30min or so :) As for the infinite loading, it's perhaps some libgig problem ? Try to upper the debuglevel in LS edit common/global.h set #define LS_DEBUG_LEVEL to 4 or better as christian said try to use libgig directly let us know please, cheers, Benno Scrive Stéphane Letz <le...@gr...>: > Hin > > I made some progress in the MacOSX port > > The instrument was not loaded because the disk thread could not be > stopped correctly. They are some issue with "pthread_cancel" not > running as it should MacOSX. > > Then loading the gig. file start.. (thus the endianness isssue seems > correct) but never end.... > > Loading gig file '/Users/letz/FreePiano.gig'... > > > Stephane > > > > ------------------------------------------------------- > This SF.Net email is sponsored by: SourceForge.net Broadband > Sign-up now for SourceForge Broadband and get the fastest > 6.0/768 connection for only $19.95/mo for the first 3 months! > http://ads.osdn.com/?ad_id=2562&alloc_id=6184&op=click > _______________________________________________ > Linuxsampler-devel mailing list > Lin...@li... > https://lists.sourceforge.net/lists/listinfo/linuxsampler-devel > ------------------------------------------------- This mail sent through http://www.gardena.net |
|
From: <le...@gr...> - 2004-05-19 13:07:29
|
Hi, The CoreMidi + Jack on MacOSX version works... almost. Note can be played but I get crash in "ProcessNoteOn" if i play too fast I will track down the problem now. Can i get write access to CVS (my sf ID is "letz") to commit the CoreMidi driver? Stephane |
|
From: Christian S. <chr...@ep...> - 2004-05-19 11:28:47
|
Es geschah am Mittwoch, 19. Mai 2004 12:41 als St=E9phane Letz schrieb: > Hin > > I made some progress in the MacOSX port > > The instrument was not loaded because the disk thread could not be > stopped correctly. They are some issue with "pthread_cancel" not > running as it should MacOSX. > > Then loading the gig. file start.. (thus the endianness isssue seems > correct) but never end.... I already expected that, because chances that there are still bigendian=20 specific bugs in libgig are quite low. Regading the thread issue; compile and run LinuxSampler's unit tests: make testcases and run them src/linuxsamplertest and show which tests fail. CU Christian |
|
From: <le...@gr...> - 2004-05-19 10:42:51
|
Hin I made some progress in the MacOSX port The instrument was not loaded because the disk thread could not be stopped correctly. They are some issue with "pthread_cancel" not running as it should MacOSX. Then loading the gig. file start.. (thus the endianness isssue seems correct) but never end.... Loading gig file '/Users/letz/FreePiano.gig'... Stephane |