Re: [Csnd-dev] [EXTERNAL] [Csnd-dev] New API progress report
Tarmo Johannes <[email protected]>
| Newsgroups | gmane.comp.audio.csound.devel |
|---|---|
| Message-ID | <CAPvdOzAoftXfaCGQR3dd6AfziBf7y2P_797VJQz9_YG2wrS9eg@mail.gmail.com> |
Hi, Yes, now it works as expected. I made now the most simple build of CsoundQt, later I will test with rtmidi and html support that might bring out more questions. At least in very initial variant of CsoundQt+Csound 7 works. It need much testing and might be unstable, of course. Best! tarmo Kontakt Victor Lazzarini (<[email protected]>) kirjutas kuupäeval L, 27. juuli 2024 kell 19:17: > Make sure the csound instance is still in existence before you call that > function. > In fact, if you destroy Csound before calling that, the circular buffer > memory will > be released as well, so you probably don’t even need to do it. > ======================== > Prof. Victor Lazzarini > Maynooth University > Ireland > > > On 27 Jul 2024, at 16:37, Tarmo Johannes <[email protected]> wrote: > > > > Hi Victor, > > > > Regarding your issue, make sure the call is always after csoundStart() > > Yes, that was it! I added it before starting the perfromance thread. Now > sound works, only thing is that is exit > > CsoundQt crashes when destroying the circular buffer. > > > > csoundDestroyCircularBuffer(ud->csound, ud->midiBuffer); > > > > I tried to build Csound in debug mode to look into it (unchecked > BUILD_RELEASE) but somehow CsoundQt did not find the plugins any more after > that. > > > > Most likely the problem is in CsoundQt code and I guess now the Csound > object gets destroyed before. I will test more later. > > > > Anyway - it is a step forward! > > > > tarmo > > > > Kontakt Victor Lazzarini (< > [email protected]>) kirjutas kuupäeval L, > 27. juuli 2024 kell 12:20: > > Hi Tarmo, > > > > that’s great, this is one of the reasons we needed your input, so the > API can be tailored to the > > needs of users. > > > > Regarding your issue, make sure the call is always after csoundStart(), > otherwise the spout will > > not have been created. Here’s a simple test to show it > > > > csoundStart(Csound); > > MYFLT *spout = csoundGetSpout(Csound); > > printf("spout = %p \n", spout) > > > > best > > ======================== > > Prof. Victor Lazzarini > > Maynooth University > > Ireland > > > > > On 27 Jul 2024, at 09:31, Tarmo Johannes <[email protected]> wrote: > > > > > > Hi Victor! > > > > > > Thank you for the changes, it helps a lot. > > > > > > > csoundGetModule > > > > csoundSetMIDIModule > > > > csoundSetRTAudioModule > > > > > > Are used in config dialog to populate a menu to list the available > modules. Now it works fine again. > > > I reverted some of my changes, left libcsnd out of libraries (this is > good news that it is not needed any more!) and CsoundQt build fine. > > > > > > I still get crash when running a csd. > > > MYFLT *outputBuffer = csoundGetSpout(udata->csound); > > > returns 0 in some reason, I will see if I can figure out the reason > later. > > > > > > Thanks! > > > tarmo > > > > > > Kontakt Victor Lazzarini (< > [email protected]>) kirjutas kuupäeval L, > 27. juuli 2024 kell 00:55: > > > Hi Tarmo, > > > > > > I put back > > > > > > > csoundGetModule > > > > csoundSetMIDIModule > > > > csoundSetRTAudioModule > > > > > > plus the set global env and the circular buffer functions. It’s in the > repo now. > > > > > > Best > > > > > > Victor > > > > > > > On 26 Jul 2024, at 20:29, Tarmo Johannes <[email protected]> wrote: > > > > > > > > *Warning* > > > > This email originated from outside of Maynooth University's Mail > System. Do not reply, click links or open attachments unless you recognise > the sender and know the content is safe. > > > > Hi! > > > > > > > > I tried out the new API from feature/newapi branch. > > > > > > > > Building csound7 went fine, I installed it to $HOME/.local (Linux) > and added $HOME/.local/lib to ldconfig libraries' path. > > > > > > > > First I tried it with a relatively simple Qt project using Csound > C++ API (csound.hpp). After some changes everything worked fine. One > question: > > > > > > > > when before there was Csound::stop() / csoundStop() , how is it now > the proper way to end Csound's work? Also csoundCleanup() is gone. is > csoundReset() it that does it all? > > > > > > > > Then I went to CsoundQt and of course that is much, much more > complex case. > > > > > > > > First - I guess libcsnd7 is not is built by default? Is it still > existing, how should I configure it? CsoundQt uses that for recording. > Maybe there is now a better way to rewrite the recording part. > > > > > > > > CsoundQt used the following functions that are not to be there any > more: > > > > > > > > csoundGetModule > > > > csoundSetMIDIModule > > > > csoundSetRTAudioModule > > > > > > > > I commented these lines out for now to move on. What covers their > functionality? > > > > > > > > There is no more circular buffer functions: > > > > csoundCreateCircularBuffer > > > > csoundReadCircularBuffer > > > > etc > > > > > > > > CsoundQt leaned heavily on them for internal MIDI handling. What is > the correct way to handle it now? > > > > For example reading MIDI data one should set the callback like: > > > > csoundSetExternalMidiReadCallback(ud->csound, &midiReadCb); > > > > > > > > CsoundQt used to have such a function for the callback: > > > > > > > > int CsoundEngine::midiReadCb(CSOUND *csound, void *ud_, unsigned > char *buf, int nBytes) > > > > { > > > > CsoundUserData *ud = (CsoundUserData *) ud_; > > > > Q_UNUSED(csound); > > > > int count, countVirtual; > > > > count = csoundReadCircularBuffer(ud->csound, ud->midiBuffer, > buf, nBytes); > > > > countVirtual = csoundReadCircularBuffer(ud->csound, > ud->virtualMidiBuffer, buf + count, nBytes - count); > > > > return count + countVirtual; > > > > } > > > > > > > > Should the host implement writing to the buffer and handling the > index itself? > > > > > > > > Is it so that csoundSetHostImplementedMIDIIO is replaced now with > > > > PUBLIC void csoundSetHostMIDIIO(CSOUND *csound); > > > > > > > > How to deal with global variables? > > > > csoundQueryGlobalVariable > > > > csoundCreateGlobalVariable > > > > are gone, > > > > > > > > csoundGetEnv is there but no csoundSetEnv, csoundSetGlobalEnv or > similar? > > > > > > > > at the moment I replaced them with Qt specific functions to deal > with environment variables. > > > > > > > > What is the correct environment variable for the plugins directory, > OPCODE7DIR64? > > > > > > > > I got CsoundQt building but it crashes when I run a file. I did not > have time yet to dig into it, there are many possible reasons. I hope to > continue tomorrow. > > > > > > > > Exciting! > > > > tarmo > > > > > > > > Kontakt Victor Lazzarini (< > [email protected]>) kirjutas kuupäeval N, > 25. juuli 2024 kell 18:27: > > > > > > > > Just another progress report for the feature/newapi branch > > > > > > > > - I have now mainlined the new API in csound.h > > > > - Updated the csound.hpp wrapper > > > > - Updated the csPerformanceThread code > > > > - Modified frontends to use it > > > > - Modified the C++ test suite > > > > > > > > It is all working, I guess frontend developers can take a look and > see what they > > > > think. > > > > > > > > François: could you take a look at the Python wrapper? It is out of > sync now. > > > > > > > > Victor > > > > > > > > > > > > > > >