<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Jan 31, 2016 at 2:44 PM, Paul Davis <span dir="ltr"><<a href="mailto:paul@linuxaudiosystems.com" target="_blank">paul@linuxaudiosystems.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span class="">On Sun, Jan 31, 2016 at 6:33 AM, Kjetil Matheussen <span dir="ltr"><<a href="mailto:k.s.matheussen@gmail.com" target="_blank">k.s.matheussen@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote"><span><div><br></div></span><div>I don't think Jack is the wrong solution for a DAW either. But Jack never got finished.</div><div>It has a wonderful API, but it shouldn't be a struggle for a program to create a jack client</div><div>if a jack server isn't running. (there were a lot of talk about this around 10 years ago,<br></div><div>but the end result never became as good as it should I think).</div></div></div></div></blockquote><div><br></div></span><div>i am not sure what the problem is here. if the client doesn't specify anything, then the server will start automatically with the same parameters as it did last time. this has worked for years. no?<br></div><span class=""><div> </div></span></div></div></div></blockquote><div> </div><div>Well, I've never used it. It doesn't feel safe. There is no obvious place to</div><div>check that it does what it's supposed to.</div><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class=""><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><br></div><div>I think the first program trying to create a client also should start the server. Not</div><div>just fork off a process, but actually run the server.</div><div>And if another program wants to create a jack client, it connects to the first client process,<br></div><div>which is the one running the server.</div></div></div></div></blockquote><div><br></div></span><div>this seems a bit odd to me. if the first client is really just a client, why would it become the server?</div></div></div></div></blockquote><div><br></div><div>If only one program produces sound, why would you also want to start a server?</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div> what happens when the user closes it (or otherwise resets it)? </div></div></div></div></blockquote><div><br></div><div>1. If it is the last client which is about to close, then the server closes as well.</div><div>2. If you close the client running the server while other clients are running as well,</div><div>then the server must be transferred to another client first, in a glitch-free and</div><div>spike-free manner, of course. This functionality would both feel natural</div><div>(the user doesn't have to think about the server concept at all), plus that it</div><div>would provide an enormous number of fun and interesting programming challenges</div><div>for the implementors of that functionality.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>that's the whole point of using a control application that exists before (and almost certainly after) all other clients.<br></div></div></div></div></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class=""><div> </div></span></div></div></div></blockquote><div><br></div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class=""><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div><br></div><div>Furthermore, GUI should be built into libjack, so that you can call</div><div>jack_open_audio_driver_configuration_gui(), jack_open_audio_connection_configuration_gui(),</div><div>etc. inside your client.</div><div><br></div><div>I know there is something called libjackserver, but how many uses it?</div></div></div></div></blockquote><div><br></div></span><div>libjackserver isn't what you think it is. you're thinking of the server API, used to start, stop and otherwise control a JACK server. it is the basis of jack2's dbus support, so basically everything using jack2 is using it. it is also present in jack1, and is also used internally there. </div></div></div></div></blockquote><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div> <br></div><div>libjackserver is also used *all* the time. <br></div><span class=""><div><br></div></span></div></div></div></blockquote><div><br></div><div>Oh right, guess I knew that once though.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class=""><div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div> Does it do</div><div>all these things? How stable is it? In my opinion, there shouldn't</div><div>be any libjackserver, or jackd program, or qjackctl, only libjack.</div></div></div></div></blockquote><div><br></div></span><div>this would simply lead *back* to jackd, since lots of people would want a program they could start in order to start jack, that would run before and after other clients. someone would write it, link it to libjack and it would become "jackd". <br></div><span class=""><div></div></span></div></div></div></blockquote><div><br></div><div>But my point is that you don't need the jackd program. Every client is also a potential</div><div>server (although the user doesn't know this), and since libjack provides functionalities for</div><div>configuring jack the same way for all clients, jackd is not needed. This way we can also</div><div>create formally specified error messages for the clients. Currently, if something goes</div><div>wrong, you have to dig around in the "messages" window in qjackctl, which may contain</div><div>some information that could help you make things work. It's really bad actually.</div><div><br></div><div><br></div></div></div></div>