Csound Csound-dev Csound-tekno Search About

[Csnd-dev] Contribution to the plugins repository

Date2021-08-31 17:09
FromMichael Gogins
Subject[Csnd-dev] Contribution to the plugins repository
I am planning to contribute the following plugin opcode libraries to https://github.com/csound/plugins, and probably more in the future. These have external dependencies.

1. CMask opcodes, depends on https://github.com/gogins/cmask. This provides all the facilities of Andre Bartetzki's CMask program as Csound opcodes.

2. MVerb opcode, depends on https://github.com/LancePutnam/Gamma. This provides a C++ implementation of Jon Christopher Nelson's Cabbage VST plugin for Jon Dattoro's reverb algorithm, as a Csound opcode.

3. musicxml opcodes, depends on https://github.com/grame-cncm/libmusicxml. These opcodes translate either a MusicXML text file, or a string containing MusicXML text, into a Csound score and schedules that score during performance. This enables Csound, given a suitable orchestra, to render scores exported from notation software such as MuseScore directly,

Obviously, dependencies in the form of "system packages" don't need much beyond a CMake "find" facility. But these dependencies don't exist as system packages, and must be built from sources.

My current thinking is to create a common plugins/dependencies directory, and put all the source code dependencies of all the plugins in that directory, as Git submodules.

What do you think? Do you have a better idea?

Regards,
Mike

-----------------------------------------------------
Michael Gogins
Irreducible Productions
http://michaelgogins.tumblr.com
Michael dot Gogins at gmail dot com

Date2021-08-31 17:23
FromStephen Kyne
SubjectRe: [Csnd-dev] Contribution to the plugins repository
Hi Mike,

Sounds like a nice contribution, fair play.

In general, I'd try and use VCPKG for all dependencies. It's also easy to add custom ports of libraries if we need to modify existing ones as well. VCPKG is supported on Linux and OSX now as well.


I don't see libmusicxml in VCPKG but it's built using CMake so it should be fairly straightforward to add. I might be able to help there.

Thanks,
Stephen


From: Csound-developers <CSOUND-DEV@LISTSERV.HEANET.IE> on behalf of Michael Gogins <michael.gogins@GMAIL.COM>
Sent: Tuesday 31 August 2021 17:09
To: CSOUND-DEV@LISTSERV.HEANET.IE <CSOUND-DEV@LISTSERV.HEANET.IE>
Subject: [Csnd-dev] Contribution to the plugins repository
 
I am planning to contribute the following plugin opcode libraries to https://github.com/csound/plugins, and probably more in the future. These have external dependencies.

1. CMask opcodes, depends on https://github.com/gogins/cmask. This provides all the facilities of Andre Bartetzki's CMask program as Csound opcodes.

2. MVerb opcode, depends on https://github.com/LancePutnam/Gamma. This provides a C++ implementation of Jon Christopher Nelson's Cabbage VST plugin for Jon Dattoro's reverb algorithm, as a Csound opcode.

3. musicxml opcodes, depends on https://github.com/grame-cncm/libmusicxml. These opcodes translate either a MusicXML text file, or a string containing MusicXML text, into a Csound score and schedules that score during performance. This enables Csound, given a suitable orchestra, to render scores exported from notation software such as MuseScore directly,

Obviously, dependencies in the form of "system packages" don't need much beyond a CMake "find" facility. But these dependencies don't exist as system packages, and must be built from sources.

My current thinking is to create a common plugins/dependencies directory, and put all the source code dependencies of all the plugins in that directory, as Git submodules.

What do you think? Do you have a better idea?

Regards,
Mike

-----------------------------------------------------
Michael Gogins
Irreducible Productions
http://michaelgogins.tumblr.com
Michael dot Gogins at gmail dot com

Date2021-08-31 17:43
From"Dr. Richard Boulanger"
SubjectRe: [Csnd-dev] Contribution to the plugins repository
Can't wait.


- dB


Dr. Richard Boulanger

Professor

Electronic Production and Design

Berklee College of Music

Professional Writing & Technology Division



On Tue, Aug 31, 2021 at 12:09 PM Michael Gogins <michael.gogins@gmail.com> wrote:
I am planning to contribute the following plugin opcode libraries to https://github.com/csound/plugins, and probably more in the future. These have external dependencies.

1. CMask opcodes, depends on https://github.com/gogins/cmask. This provides all the facilities of Andre Bartetzki's CMask program as Csound opcodes.

2. MVerb opcode, depends on https://github.com/LancePutnam/Gamma. This provides a C++ implementation of Jon Christopher Nelson's Cabbage VST plugin for Jon Dattoro's reverb algorithm, as a Csound opcode.

3. musicxml opcodes, depends on https://github.com/grame-cncm/libmusicxml. These opcodes translate either a MusicXML text file, or a string containing MusicXML text, into a Csound score and schedules that score during performance. This enables Csound, given a suitable orchestra, to render scores exported from notation software such as MuseScore directly,

Obviously, dependencies in the form of "system packages" don't need much beyond a CMake "find" facility. But these dependencies don't exist as system packages, and must be built from sources.

My current thinking is to create a common plugins/dependencies directory, and put all the source code dependencies of all the plugins in that directory, as Git submodules.

What do you think? Do you have a better idea?

Regards,
Mike

-----------------------------------------------------
Michael Gogins
Irreducible Productions
http://michaelgogins.tumblr.com
Michael dot Gogins at gmail dot com

Date2021-08-31 19:15
FromVictor Lazzarini
SubjectRe: [Csnd-dev] [EXTERNAL] [Csnd-dev] Contribution to the plugins repository
Mike,

these are good contributions, but I think they are better suited to be kept as third-party packages which you can maintain in your own repository.

The plugins repository is not really meant for this. Particularly as we do not have a maintainer. It will increase the complexity of upkeep and making release packages.

However, if any of the opcodes below have no dependencies, then you could considef adding it to the Csound repository and it will be maintained there.

The basic principles at the moment are:

1) have dependencies: keep them as a third-party library.

2) no dependencies: either keep them
as a third-party library or contribute them to the Csound repository. In that case, if it's in C, add it as builtin linkage, otherwise add it as a plugin.

Of course if we can find someone committed to maintain the plugins repository on a long-term basis, producing release packages etc, then they can decide on other rules for expanding the repository.

For the moment, I am against any new code being added to the plugins repository that has not originated in the Csound sources.
It had been hard work putting this into
shape and it is in a fragile state as it is.

best regards

Prof. Victor Lazzarini
Maynooth University
Ireland

On 31 Aug 2021, at 17:09, Michael Gogins <michael.gogins@gmail.com> 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.

I am planning to contribute the following plugin opcode libraries to https://github.com/csound/plugins, and probably more in the future. These have external dependencies.

1. CMask opcodes, depends on https://github.com/gogins/cmask. This provides all the facilities of Andre Bartetzki's CMask program as Csound opcodes.

2. MVerb opcode, depends on https://github.com/LancePutnam/Gamma. This provides a C++ implementation of Jon Christopher Nelson's Cabbage VST plugin for Jon Dattoro's reverb algorithm, as a Csound opcode.

3. musicxml opcodes, depends on https://github.com/grame-cncm/libmusicxml. These opcodes translate either a MusicXML text file, or a string containing MusicXML text, into a Csound score and schedules that score during performance. This enables Csound, given a suitable orchestra, to render scores exported from notation software such as MuseScore directly,

Obviously, dependencies in the form of "system packages" don't need much beyond a CMake "find" facility. But these dependencies don't exist as system packages, and must be built from sources.

My current thinking is to create a common plugins/dependencies directory, and put all the source code dependencies of all the plugins in that directory, as Git submodules.

What do you think? Do you have a better idea?

Regards,
Mike

-----------------------------------------------------
Michael Gogins
Irreducible Productions
http://michaelgogins.tumblr.com
Michael dot Gogins at gmail dot com

Date2021-08-31 19:33
FromRory Walsh
SubjectRe: [Csnd-dev] [EXTERNAL] [Csnd-dev] Contribution to the plugins repository
I'm with Victor here. Unless we can find someone to maintain this repository, it's pointless submitting source code to it. Victor and I spent quite some time preparing the current release. I don't think either of us can give any more time to maintaining any future opcodes. Personally I think authors should host and maintain their own opcodes. Eduardo and I both do this with our own opcode repositories and it works fine. 

On Tue, 31 Aug 2021 at 19:15, Victor Lazzarini <Victor.Lazzarini@mu.ie> wrote:
Mike,

these are good contributions, but I think they are better suited to be kept as third-party packages which you can maintain in your own repository.

The plugins repository is not really meant for this. Particularly as we do not have a maintainer. It will increase the complexity of upkeep and making release packages.

However, if any of the opcodes below have no dependencies, then you could considef adding it to the Csound repository and it will be maintained there.

The basic principles at the moment are:

1) have dependencies: keep them as a third-party library.

2) no dependencies: either keep them
as a third-party library or contribute them to the Csound repository. In that case, if it's in C, add it as builtin linkage, otherwise add it as a plugin.

Of course if we can find someone committed to maintain the plugins repository on a long-term basis, producing release packages etc, then they can decide on other rules for expanding the repository.

For the moment, I am against any new code being added to the plugins repository that has not originated in the Csound sources.
It had been hard work putting this into
shape and it is in a fragile state as it is.

best regards

Prof. Victor Lazzarini
Maynooth University
Ireland

On 31 Aug 2021, at 17:09, Michael Gogins <michael.gogins@gmail.com> 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.

I am planning to contribute the following plugin opcode libraries to https://github.com/csound/plugins, and probably more in the future. These have external dependencies.

1. CMask opcodes, depends on https://github.com/gogins/cmask. This provides all the facilities of Andre Bartetzki's CMask program as Csound opcodes.

2. MVerb opcode, depends on https://github.com/LancePutnam/Gamma. This provides a C++ implementation of Jon Christopher Nelson's Cabbage VST plugin for Jon Dattoro's reverb algorithm, as a Csound opcode.

3. musicxml opcodes, depends on https://github.com/grame-cncm/libmusicxml. These opcodes translate either a MusicXML text file, or a string containing MusicXML text, into a Csound score and schedules that score during performance. This enables Csound, given a suitable orchestra, to render scores exported from notation software such as MuseScore directly,

Obviously, dependencies in the form of "system packages" don't need much beyond a CMake "find" facility. But these dependencies don't exist as system packages, and must be built from sources.

My current thinking is to create a common plugins/dependencies directory, and put all the source code dependencies of all the plugins in that directory, as Git submodules.

What do you think? Do you have a better idea?

Regards,
Mike

-----------------------------------------------------
Michael Gogins
Irreducible Productions
http://michaelgogins.tumblr.com
Michael dot Gogins at gmail dot com

Date2021-08-31 22:35
FromMichael Gogins
SubjectRe: [Csnd-dev] [EXTERNAL] [Csnd-dev] Contribution to the plugins repository
What you are saying, and what Rory is saying, directly contradicts what the plugins repository itself, which you created, says: "Repository for Csound plugins which were originally in the main repository, and for new plugins as well."

Please explain.

Regards,
Mike





-----------------------------------------------------
Michael Gogins
Irreducible Productions
http://michaelgogins.tumblr.com
Michael dot Gogins at gmail dot com


On Tue, Aug 31, 2021 at 2:15 PM Victor Lazzarini <Victor.Lazzarini@mu.ie> wrote:
Mike,

these are good contributions, but I think they are better suited to be kept as third-party packages which you can maintain in your own repository.

The plugins repository is not really meant for this. Particularly as we do not have a maintainer. It will increase the complexity of upkeep and making release packages.

However, if any of the opcodes below have no dependencies, then you could considef adding it to the Csound repository and it will be maintained there.

The basic principles at the moment are:

1) have dependencies: keep them as a third-party library.

2) no dependencies: either keep them
as a third-party library or contribute them to the Csound repository. In that case, if it's in C, add it as builtin linkage, otherwise add it as a plugin.

Of course if we can find someone committed to maintain the plugins repository on a long-term basis, producing release packages etc, then they can decide on other rules for expanding the repository.

For the moment, I am against any new code being added to the plugins repository that has not originated in the Csound sources.
It had been hard work putting this into
shape and it is in a fragile state as it is.

best regards

Prof. Victor Lazzarini
Maynooth University
Ireland

On 31 Aug 2021, at 17:09, Michael Gogins <michael.gogins@gmail.com> 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.

I am planning to contribute the following plugin opcode libraries to https://github.com/csound/plugins, and probably more in the future. These have external dependencies.

1. CMask opcodes, depends on https://github.com/gogins/cmask. This provides all the facilities of Andre Bartetzki's CMask program as Csound opcodes.

2. MVerb opcode, depends on https://github.com/LancePutnam/Gamma. This provides a C++ implementation of Jon Christopher Nelson's Cabbage VST plugin for Jon Dattoro's reverb algorithm, as a Csound opcode.

3. musicxml opcodes, depends on https://github.com/grame-cncm/libmusicxml. These opcodes translate either a MusicXML text file, or a string containing MusicXML text, into a Csound score and schedules that score during performance. This enables Csound, given a suitable orchestra, to render scores exported from notation software such as MuseScore directly,

Obviously, dependencies in the form of "system packages" don't need much beyond a CMake "find" facility. But these dependencies don't exist as system packages, and must be built from sources.

My current thinking is to create a common plugins/dependencies directory, and put all the source code dependencies of all the plugins in that directory, as Git submodules.

What do you think? Do you have a better idea?

Regards,
Mike

-----------------------------------------------------
Michael Gogins
Irreducible Productions
http://michaelgogins.tumblr.com
Michael dot Gogins at gmail dot com

Date2021-09-01 00:27
FromMichael Gogins
SubjectRe: [Csnd-dev] [EXTERNAL] [Csnd-dev] Contribution to the plugins repository
As currently built, the opcodes I was planning to contribute have external dependencies.

However, it would be pretty easy to get rid of the CMask external dependency for the cmask opcodes just by importing the source code from the cmask repository into the Csound repository. The license should not be an issue, it is compatible with LGPLv2.1. The code is straightforward C++.

Regards,
Mike

-----------------------------------------------------
Michael Gogins
Irreducible Productions
http://michaelgogins.tumblr.com
Michael dot Gogins at gmail dot com


On Tue, Aug 31, 2021 at 2:15 PM Victor Lazzarini <Victor.Lazzarini@mu.ie> wrote:
Mike,

these are good contributions, but I think they are better suited to be kept as third-party packages which you can maintain in your own repository.

The plugins repository is not really meant for this. Particularly as we do not have a maintainer. It will increase the complexity of upkeep and making release packages.

However, if any of the opcodes below have no dependencies, then you could considef adding it to the Csound repository and it will be maintained there.

The basic principles at the moment are:

1) have dependencies: keep them as a third-party library.

2) no dependencies: either keep them
as a third-party library or contribute them to the Csound repository. In that case, if it's in C, add it as builtin linkage, otherwise add it as a plugin.

Of course if we can find someone committed to maintain the plugins repository on a long-term basis, producing release packages etc, then they can decide on other rules for expanding the repository.

For the moment, I am against any new code being added to the plugins repository that has not originated in the Csound sources.
It had been hard work putting this into
shape and it is in a fragile state as it is.

best regards

Prof. Victor Lazzarini
Maynooth University
Ireland

On 31 Aug 2021, at 17:09, Michael Gogins <michael.gogins@gmail.com> 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.

I am planning to contribute the following plugin opcode libraries to https://github.com/csound/plugins, and probably more in the future. These have external dependencies.

1. CMask opcodes, depends on https://github.com/gogins/cmask. This provides all the facilities of Andre Bartetzki's CMask program as Csound opcodes.

2. MVerb opcode, depends on https://github.com/LancePutnam/Gamma. This provides a C++ implementation of Jon Christopher Nelson's Cabbage VST plugin for Jon Dattoro's reverb algorithm, as a Csound opcode.

3. musicxml opcodes, depends on https://github.com/grame-cncm/libmusicxml. These opcodes translate either a MusicXML text file, or a string containing MusicXML text, into a Csound score and schedules that score during performance. This enables Csound, given a suitable orchestra, to render scores exported from notation software such as MuseScore directly,

Obviously, dependencies in the form of "system packages" don't need much beyond a CMake "find" facility. But these dependencies don't exist as system packages, and must be built from sources.

My current thinking is to create a common plugins/dependencies directory, and put all the source code dependencies of all the plugins in that directory, as Git submodules.

What do you think? Do you have a better idea?

Regards,
Mike

-----------------------------------------------------
Michael Gogins
Irreducible Productions
http://michaelgogins.tumblr.com
Michael dot Gogins at gmail dot com

Date2021-09-01 06:35
FromRory Walsh
SubjectRe: [Csnd-dev] [EXTERNAL] [Csnd-dev] Contribution to the plugins repository
Hi Mike, is the any way would you be willing to maintain the repo and manage future releases for Windows and MacOS? 

On Wed 1 Sep 2021, 12:27 a.m. Michael Gogins, <michael.gogins@gmail.com> wrote:
As currently built, the opcodes I was planning to contribute have external dependencies.

However, it would be pretty easy to get rid of the CMask external dependency for the cmask opcodes just by importing the source code from the cmask repository into the Csound repository. The license should not be an issue, it is compatible with LGPLv2.1. The code is straightforward C++.

Regards,
Mike

-----------------------------------------------------
Michael Gogins
Irreducible Productions
http://michaelgogins.tumblr.com
Michael dot Gogins at gmail dot com


On Tue, Aug 31, 2021 at 2:15 PM Victor Lazzarini <Victor.Lazzarini@mu.ie> wrote:
Mike,

these are good contributions, but I think they are better suited to be kept as third-party packages which you can maintain in your own repository.

The plugins repository is not really meant for this. Particularly as we do not have a maintainer. It will increase the complexity of upkeep and making release packages.

However, if any of the opcodes below have no dependencies, then you could considef adding it to the Csound repository and it will be maintained there.

The basic principles at the moment are:

1) have dependencies: keep them as a third-party library.

2) no dependencies: either keep them
as a third-party library or contribute them to the Csound repository. In that case, if it's in C, add it as builtin linkage, otherwise add it as a plugin.

Of course if we can find someone committed to maintain the plugins repository on a long-term basis, producing release packages etc, then they can decide on other rules for expanding the repository.

For the moment, I am against any new code being added to the plugins repository that has not originated in the Csound sources.
It had been hard work putting this into
shape and it is in a fragile state as it is.

best regards

Prof. Victor Lazzarini
Maynooth University
Ireland

On 31 Aug 2021, at 17:09, Michael Gogins <michael.gogins@gmail.com> 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.

I am planning to contribute the following plugin opcode libraries to https://github.com/csound/plugins, and probably more in the future. These have external dependencies.

1. CMask opcodes, depends on https://github.com/gogins/cmask. This provides all the facilities of Andre Bartetzki's CMask program as Csound opcodes.

2. MVerb opcode, depends on https://github.com/LancePutnam/Gamma. This provides a C++ implementation of Jon Christopher Nelson's Cabbage VST plugin for Jon Dattoro's reverb algorithm, as a Csound opcode.

3. musicxml opcodes, depends on https://github.com/grame-cncm/libmusicxml. These opcodes translate either a MusicXML text file, or a string containing MusicXML text, into a Csound score and schedules that score during performance. This enables Csound, given a suitable orchestra, to render scores exported from notation software such as MuseScore directly,

Obviously, dependencies in the form of "system packages" don't need much beyond a CMake "find" facility. But these dependencies don't exist as system packages, and must be built from sources.

My current thinking is to create a common plugins/dependencies directory, and put all the source code dependencies of all the plugins in that directory, as Git submodules.

What do you think? Do you have a better idea?

Regards,
Mike

-----------------------------------------------------
Michael Gogins
Irreducible Productions
http://michaelgogins.tumblr.com
Michael dot Gogins at gmail dot com

Date2021-09-01 06:42
FromVictor Lazzarini
SubjectRe: [Csnd-dev] [EXTERNAL] [Csnd-dev] Contribution to the plugins repository
That may be so, but until we have a maintainer that needs to wait.

Prof. Victor Lazzarini
Maynooth University
Ireland

On 31 Aug 2021, at 22:36, Michael Gogins <michael.gogins@gmail.com> wrote:


What you are saying, and what Rory is saying, directly contradicts what the plugins repository itself, which you created, says: "Repository for Csound plugins which were originally in the main repository, and for new plugins as well."

Please explain.

Regards,
Mike





-----------------------------------------------------
Michael Gogins
Irreducible Productions
http://michaelgogins.tumblr.com
Michael dot Gogins at gmail dot com


On Tue, Aug 31, 2021 at 2:15 PM Victor Lazzarini <Victor.Lazzarini@mu.ie> wrote:
Mike,

these are good contributions, but I think they are better suited to be kept as third-party packages which you can maintain in your own repository.

The plugins repository is not really meant for this. Particularly as we do not have a maintainer. It will increase the complexity of upkeep and making release packages.

However, if any of the opcodes below have no dependencies, then you could considef adding it to the Csound repository and it will be maintained there.

The basic principles at the moment are:

1) have dependencies: keep them as a third-party library.

2) no dependencies: either keep them
as a third-party library or contribute them to the Csound repository. In that case, if it's in C, add it as builtin linkage, otherwise add it as a plugin.

Of course if we can find someone committed to maintain the plugins repository on a long-term basis, producing release packages etc, then they can decide on other rules for expanding the repository.

For the moment, I am against any new code being added to the plugins repository that has not originated in the Csound sources.
It had been hard work putting this into
shape and it is in a fragile state as it is.

best regards

Prof. Victor Lazzarini
Maynooth University
Ireland

On 31 Aug 2021, at 17:09, Michael Gogins <michael.gogins@gmail.com> 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.

I am planning to contribute the following plugin opcode libraries to https://github.com/csound/plugins, and probably more in the future. These have external dependencies.

1. CMask opcodes, depends on https://github.com/gogins/cmask. This provides all the facilities of Andre Bartetzki's CMask program as Csound opcodes.

2. MVerb opcode, depends on https://github.com/LancePutnam/Gamma. This provides a C++ implementation of Jon Christopher Nelson's Cabbage VST plugin for Jon Dattoro's reverb algorithm, as a Csound opcode.

3. musicxml opcodes, depends on https://github.com/grame-cncm/libmusicxml. These opcodes translate either a MusicXML text file, or a string containing MusicXML text, into a Csound score and schedules that score during performance. This enables Csound, given a suitable orchestra, to render scores exported from notation software such as MuseScore directly,

Obviously, dependencies in the form of "system packages" don't need much beyond a CMake "find" facility. But these dependencies don't exist as system packages, and must be built from sources.

My current thinking is to create a common plugins/dependencies directory, and put all the source code dependencies of all the plugins in that directory, as Git submodules.

What do you think? Do you have a better idea?

Regards,
Mike

-----------------------------------------------------
Michael Gogins
Irreducible Productions
http://michaelgogins.tumblr.com
Michael dot Gogins at gmail dot com

Date2021-09-01 08:13
FromFrancois PINOT
SubjectRe: [Csnd-dev] Contribution to the plugins repository
About cmask, people might be interested in this: https://github.com/fggp/gmask. It's a port of the cmask program to the Go programming language with binaries cross-compiled for the main platforms. And here is a golang library offering the cmask possibilities to go programs.

Regards

François

Le mar. 31 août 2021 à 18:09, Michael Gogins <michael.gogins@gmail.com> a écrit :
I am planning to contribute the following plugin opcode libraries to https://github.com/csound/plugins, and probably more in the future. These have external dependencies.

1. CMask opcodes, depends on https://github.com/gogins/cmask. This provides all the facilities of Andre Bartetzki's CMask program as Csound opcodes.

2. MVerb opcode, depends on https://github.com/LancePutnam/Gamma. This provides a C++ implementation of Jon Christopher Nelson's Cabbage VST plugin for Jon Dattoro's reverb algorithm, as a Csound opcode.

3. musicxml opcodes, depends on https://github.com/grame-cncm/libmusicxml. These opcodes translate either a MusicXML text file, or a string containing MusicXML text, into a Csound score and schedules that score during performance. This enables Csound, given a suitable orchestra, to render scores exported from notation software such as MuseScore directly,

Obviously, dependencies in the form of "system packages" don't need much beyond a CMake "find" facility. But these dependencies don't exist as system packages, and must be built from sources.

My current thinking is to create a common plugins/dependencies directory, and put all the source code dependencies of all the plugins in that directory, as Git submodules.

What do you think? Do you have a better idea?

Regards,
Mike

-----------------------------------------------------
Michael Gogins
Irreducible Productions
http://michaelgogins.tumblr.com
Michael dot Gogins at gmail dot com

Date2021-09-01 08:14
FromFrancois PINOT
SubjectRe: [Csnd-dev] Contribution to the plugins repository
It's better with the link to the library: https://github.com/fggp/gmasklib

François

Le mer. 1 sept. 2021 à 09:13, Francois PINOT <fggpinot@gmail.com> a écrit :
About cmask, people might be interested in this: https://github.com/fggp/gmask. It's a port of the cmask program to the Go programming language with binaries cross-compiled for the main platforms. And here is a golang library offering the cmask possibilities to go programs.

Regards

François

Le mar. 31 août 2021 à 18:09, Michael Gogins <michael.gogins@gmail.com> a écrit :
I am planning to contribute the following plugin opcode libraries to https://github.com/csound/plugins, and probably more in the future. These have external dependencies.

1. CMask opcodes, depends on https://github.com/gogins/cmask. This provides all the facilities of Andre Bartetzki's CMask program as Csound opcodes.

2. MVerb opcode, depends on https://github.com/LancePutnam/Gamma. This provides a C++ implementation of Jon Christopher Nelson's Cabbage VST plugin for Jon Dattoro's reverb algorithm, as a Csound opcode.

3. musicxml opcodes, depends on https://github.com/grame-cncm/libmusicxml. These opcodes translate either a MusicXML text file, or a string containing MusicXML text, into a Csound score and schedules that score during performance. This enables Csound, given a suitable orchestra, to render scores exported from notation software such as MuseScore directly,

Obviously, dependencies in the form of "system packages" don't need much beyond a CMake "find" facility. But these dependencies don't exist as system packages, and must be built from sources.

My current thinking is to create a common plugins/dependencies directory, and put all the source code dependencies of all the plugins in that directory, as Git submodules.

What do you think? Do you have a better idea?

Regards,
Mike

-----------------------------------------------------
Michael Gogins
Irreducible Productions
http://michaelgogins.tumblr.com
Michael dot Gogins at gmail dot com

Date2021-09-01 08:59
FromVictor Lazzarini
SubjectRe: [Csnd-dev] [EXTERNAL] [Csnd-dev] Contribution to the plugins repository
So here’s my thoughts about this

1) as it involves a complete set of third-party files, with a different licence (even though compatible with the current license we use),
it may not be suitable for addition to the Csound code. Even though it does not have external dependencies, we are still dependent on
other code that may need to be maintained, which is different from a set of opcodes wholly written by the contributor.

2) it is then a question of whether it suits the plugins library, as it is a lower risk project. In principle, while the issue raised in 1)
does not go away, it may be less of a problem here. The problem continues to be that we are adding code to a project that does not
yet have any long-term maintainer, and if for some reason this code fails to work in one way or the other, there is no one committed
to follow it up and getting things fixed, as well as preparing releases etc for it.

3) and so we ask why does it need to be placed there, when it can be maintained by yourself in your repository, as Rory quite rightly
noted in his comments. 

It would be interesting to hear opinions from other contributors.
========================
Prof. Victor Lazzarini
Maynooth University
Ireland

> On 1 Sep 2021, at 00:27, Michael Gogins  wrote:
> 
> As currently built, the opcodes I was planning to contribute have external dependencies.
> 
> However, it would be pretty easy to get rid of the CMask external dependency for the cmask opcodes just by importing the source code from the cmask repository into the Csound repository. The license should not be an issue, it is compatible with LGPLv2.1. The code is straightforward C++.
> 
> Regards,
> Mike
> 
> -----------------------------------------------------
> Michael Gogins
> Irreducible Productions
> http://michaelgogins.tumblr.com
> Michael dot Gogins at gmail dot com
> 
> 
> On Tue, Aug 31, 2021 at 2:15 PM Victor Lazzarini  wrote:
> Mike,
> 
> these are good contributions, but I think they are better suited to be kept as third-party packages which you can maintain in your own repository.
> 
> The plugins repository is not really meant for this. Particularly as we do not have a maintainer. It will increase the complexity of upkeep and making release packages.
> 
> However, if any of the opcodes below have no dependencies, then you could considef adding it to the Csound repository and it will be maintained there.
> 
> The basic principles at the moment are:
> 
> 1) have dependencies: keep them as a third-party library.
> 
> 2) no dependencies: either keep them
> as a third-party library or contribute them to the Csound repository. In that case, if it's in C, add it as builtin linkage, otherwise add it as a plugin.
> 
> Of course if we can find someone committed to maintain the plugins repository on a long-term basis, producing release packages etc, then they can decide on other rules for expanding the repository.
> 
> For the moment, I am against any new code being added to the plugins repository that has not originated in the Csound sources.
> It had been hard work putting this into
> shape and it is in a fragile state as it is.
> 
> best regards
> 
> Prof. Victor Lazzarini
> Maynooth University
> Ireland
> 
>> On 31 Aug 2021, at 17:09, Michael Gogins  wrote:
>> 
>> 
>> WARNINGThis 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.
>> I am planning to contribute the following plugin opcode libraries to https://github.com/csound/plugins, and probably more in the future. These have external dependencies.
>> 
>> 1. CMask opcodes, depends on https://github.com/gogins/cmask. This provides all the facilities of Andre Bartetzki's CMask program as Csound opcodes.
>> 
>> 2. MVerb opcode, depends on https://github.com/LancePutnam/Gamma. This provides a C++ implementation of Jon Christopher Nelson's Cabbage VST plugin for Jon Dattoro's reverb algorithm, as a Csound opcode.
>> 
>> 3. musicxml opcodes, depends on https://github.com/grame-cncm/libmusicxml. These opcodes translate either a MusicXML text file, or a string containing MusicXML text, into a Csound score and schedules that score during performance. This enables Csound, given a suitable orchestra, to render scores exported from notation software such as MuseScore directly,
>> 
>> Obviously, dependencies in the form of "system packages" don't need much beyond a CMake "find" facility. But these dependencies don't exist as system packages, and must be built from sources.
>> 
>> My current thinking is to create a common plugins/dependencies directory, and put all the source code dependencies of all the plugins in that directory, as Git submodules.
>> 
>> What do you think? Do you have a better idea?
>> 
>> Regards,
>> Mike
>> 
>> -----------------------------------------------------
>> Michael Gogins
>> Irreducible Productions
>> http://michaelgogins.tumblr.com
>> Michael dot Gogins at gmail dot com


Date2021-09-01 10:25
FromEduardo Moguillansky
SubjectRe: [Csnd-dev] [EXTERNAL] [Csnd-dev] Contribution to the plugins repository
I agree with victor that plugins should be hosted by the maintainer. 
Setting CI integration for multiple platforms, which is something that 
the csound/plugins repository still does not have, is incredibly tedious 
and time-intensive, the complexity of this task being exponentially 
related to the number of dependencies, where each new library might 
itself have dependencies with obscure incantations needed when building 
remotely.

 From my perspective, the best way to aggregate/distribute plugins is to 
follow projects like deken, where plugin maintainers can upload binaries 
while each author is responsible for building and testing such binaries.

regards,
Eduardo

On 01.09.21 09:59, Victor Lazzarini wrote:
> So here’s my thoughts about this
>
> 1) as it involves a complete set of third-party files, with a different licence (even though compatible with the current license we use),
> it may not be suitable for addition to the Csound code. Even though it does not have external dependencies, we are still dependent on
> other code that may need to be maintained, which is different from a set of opcodes wholly written by the contributor.
>
> 2) it is then a question of whether it suits the plugins library, as it is a lower risk project. In principle, while the issue raised in 1)
> does not go away, it may be less of a problem here. The problem continues to be that we are adding code to a project that does not
> yet have any long-term maintainer, and if for some reason this code fails to work in one way or the other, there is no one committed
> to follow it up and getting things fixed, as well as preparing releases etc for it.
>
> 3) and so we ask why does it need to be placed there, when it can be maintained by yourself in your repository, as Rory quite rightly
> noted in his comments.
>
> It would be interesting to hear opinions from other contributors.
> ========================
> Prof. Victor Lazzarini
> Maynooth University
> Ireland
>
>> On 1 Sep 2021, at 00:27, Michael Gogins  wrote:
>>
>> As currently built, the opcodes I was planning to contribute have external dependencies.
>>
>> However, it would be pretty easy to get rid of the CMask external dependency for the cmask opcodes just by importing the source code from the cmask repository into the Csound repository. The license should not be an issue, it is compatible with LGPLv2.1. The code is straightforward C++.
>>
>> Regards,
>> Mike
>>
>> -----------------------------------------------------
>> Michael Gogins
>> Irreducible Productions
>> http://michaelgogins.tumblr.com
>> Michael dot Gogins at gmail dot com
>>
>>
>> On Tue, Aug 31, 2021 at 2:15 PM Victor Lazzarini  wrote:
>> Mike,
>>
>> these are good contributions, but I think they are better suited to be kept as third-party packages which you can maintain in your own repository.
>>
>> The plugins repository is not really meant for this. Particularly as we do not have a maintainer. It will increase the complexity of upkeep and making release packages.
>>
>> However, if any of the opcodes below have no dependencies, then you could considef adding it to the Csound repository and it will be maintained there.
>>
>> The basic principles at the moment are:
>>
>> 1) have dependencies: keep them as a third-party library.
>>
>> 2) no dependencies: either keep them
>> as a third-party library or contribute them to the Csound repository. In that case, if it's in C, add it as builtin linkage, otherwise add it as a plugin.
>>
>> Of course if we can find someone committed to maintain the plugins repository on a long-term basis, producing release packages etc, then they can decide on other rules for expanding the repository.
>>
>> For the moment, I am against any new code being added to the plugins repository that has not originated in the Csound sources.
>> It had been hard work putting this into
>> shape and it is in a fragile state as it is.
>>
>> best regards
>>
>> Prof. Victor Lazzarini
>> Maynooth University
>> Ireland
>>
>>> On 31 Aug 2021, at 17:09, Michael Gogins  wrote:
>>>
>>> 
>>> WARNINGThis 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.
>>> I am planning to contribute the following plugin opcode libraries to https://github.com/csound/plugins, and probably more in the future. These have external dependencies.
>>>
>>> 1. CMask opcodes, depends on https://github.com/gogins/cmask. This provides all the facilities of Andre Bartetzki's CMask program as Csound opcodes.
>>>
>>> 2. MVerb opcode, depends on https://github.com/LancePutnam/Gamma. This provides a C++ implementation of Jon Christopher Nelson's Cabbage VST plugin for Jon Dattoro's reverb algorithm, as a Csound opcode.
>>>
>>> 3. musicxml opcodes, depends on https://github.com/grame-cncm/libmusicxml. These opcodes translate either a MusicXML text file, or a string containing MusicXML text, into a Csound score and schedules that score during performance. This enables Csound, given a suitable orchestra, to render scores exported from notation software such as MuseScore directly,
>>>
>>> Obviously, dependencies in the form of "system packages" don't need much beyond a CMake "find" facility. But these dependencies don't exist as system packages, and must be built from sources.
>>>
>>> My current thinking is to create a common plugins/dependencies directory, and put all the source code dependencies of all the plugins in that directory, as Git submodules.
>>>
>>> What do you think? Do you have a better idea?
>>>
>>> Regards,
>>> Mike
>>>
>>> -----------------------------------------------------
>>> Michael Gogins
>>> Irreducible Productions
>>> http://michaelgogins.tumblr.com
>>> Michael dot Gogins at gmail dot com

Date2021-09-01 12:46
FromFrancois PINOT
SubjectRe: [Csnd-dev] [EXTERNAL] [Csnd-dev] Contribution to the plugins repository
I agree with Victor. To complete the third point, we could have a page with links dedicated to these plugins on  https://csound.com/ so that people can have a unique reference place to access the different repos.

François

Le mer. 1 sept. 2021 à 09:59, Victor Lazzarini <Victor.Lazzarini@mu.ie> a écrit :
So here’s my thoughts about this

1) as it involves a complete set of third-party files, with a different licence (even though compatible with the current license we use),
it may not be suitable for addition to the Csound code. Even though it does not have external dependencies, we are still dependent on
other code that may need to be maintained, which is different from a set of opcodes wholly written by the contributor.

2) it is then a question of whether it suits the plugins library, as it is a lower risk project. In principle, while the issue raised in 1)
does not go away, it may be less of a problem here. The problem continues to be that we are adding code to a project that does not
yet have any long-term maintainer, and if for some reason this code fails to work in one way or the other, there is no one committed
to follow it up and getting things fixed, as well as preparing releases etc for it.

3) and so we ask why does it need to be placed there, when it can be maintained by yourself in your repository, as Rory quite rightly
noted in his comments.

It would be interesting to hear opinions from other contributors.
========================
Prof. Victor Lazzarini
Maynooth University
Ireland

> On 1 Sep 2021, at 00:27, Michael Gogins <michael.gogins@gmail.com> wrote:
>
> As currently built, the opcodes I was planning to contribute have external dependencies.
>
> However, it would be pretty easy to get rid of the CMask external dependency for the cmask opcodes just by importing the source code from the cmask repository into the Csound repository. The license should not be an issue, it is compatible with LGPLv2.1. The code is straightforward C++.
>
> Regards,
> Mike
>
> -----------------------------------------------------
> Michael Gogins
> Irreducible Productions
> http://michaelgogins.tumblr.com
> Michael dot Gogins at gmail dot com
>
>
> On Tue, Aug 31, 2021 at 2:15 PM Victor Lazzarini <Victor.Lazzarini@mu.ie> wrote:
> Mike,
>
> these are good contributions, but I think they are better suited to be kept as third-party packages which you can maintain in your own repository.
>
> The plugins repository is not really meant for this. Particularly as we do not have a maintainer. It will increase the complexity of upkeep and making release packages.
>
> However, if any of the opcodes below have no dependencies, then you could considef adding it to the Csound repository and it will be maintained there.
>
> The basic principles at the moment are:
>
> 1) have dependencies: keep them as a third-party library.
>
> 2) no dependencies: either keep them
> as a third-party library or contribute them to the Csound repository. In that case, if it's in C, add it as builtin linkage, otherwise add it as a plugin.
>
> Of course if we can find someone committed to maintain the plugins repository on a long-term basis, producing release packages etc, then they can decide on other rules for expanding the repository.
>
> For the moment, I am against any new code being added to the plugins repository that has not originated in the Csound sources.
> It had been hard work putting this into
> shape and it is in a fragile state as it is.
>
> best regards
>
> Prof. Victor Lazzarini
> Maynooth University
> Ireland
>
>> On 31 Aug 2021, at 17:09, Michael Gogins <michael.gogins@gmail.com> wrote:
>>
>> 
>> WARNINGThis 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.
>> I am planning to contribute the following plugin opcode libraries to https://github.com/csound/plugins, and probably more in the future. These have external dependencies.
>>
>> 1. CMask opcodes, depends on https://github.com/gogins/cmask. This provides all the facilities of Andre Bartetzki's CMask program as Csound opcodes.
>>
>> 2. MVerb opcode, depends on https://github.com/LancePutnam/Gamma. This provides a C++ implementation of Jon Christopher Nelson's Cabbage VST plugin for Jon Dattoro's reverb algorithm, as a Csound opcode.
>>
>> 3. musicxml opcodes, depends on https://github.com/grame-cncm/libmusicxml. These opcodes translate either a MusicXML text file, or a string containing MusicXML text, into a Csound score and schedules that score during performance. This enables Csound, given a suitable orchestra, to render scores exported from notation software such as MuseScore directly,
>>
>> Obviously, dependencies in the form of "system packages" don't need much beyond a CMake "find" facility. But these dependencies don't exist as system packages, and must be built from sources.
>>
>> My current thinking is to create a common plugins/dependencies directory, and put all the source code dependencies of all the plugins in that directory, as Git submodules.
>>
>> What do you think? Do you have a better idea?
>>
>> Regards,
>> Mike
>>
>> -----------------------------------------------------
>> Michael Gogins
>> Irreducible Productions
>> http://michaelgogins.tumblr.com
>> Michael dot Gogins at gmail dot com


Date2021-09-01 13:27
FromStephen Kyne
SubjectRe: [Csnd-dev] [EXTERNAL] [Csnd-dev] Contribution to the plugins repository
I think a hybrid solution would be best. Forcing people to create a repo for their code, adding CI and distribution isn't going to foster growth of the plugin library and external contributions. We need to make it easy for people to submit a small amount of code.

Ideally, we would have an easy repo to submit a PR to, where the code has minimal dependencies, and we have the framework setup to automatically publish plugins from. 

I think the csound/plugins repo should fully embrace VCPKG (which is the defacto library manager for C/C++ due to Microsoft's investment) and ensure each plugin entered can work on all platforms (Mac, Linux, Win anyways). Any 3rd party dependency must be within VCPKG to be accepted. This reduces the burden of maintenance for us. No more custom hacky scripts to get stuff to build.

The other side of it is how to incorporate 3rd party plugins that are more complex. Well, maybe within the csound/plugins repo, we can include some kind of registry file that points to these external repos/binaries that will eventually feed into the package manger. 

I do think dumping old code into the plugins repo that is awkward to build and not supported on all platforms is a recipe for disaster. It is also the original problem we were trying to solve by moving out this code from the main library.

Thanks,
Stephen

From: Csound-developers <CSOUND-DEV@LISTSERV.HEANET.IE> on behalf of Francois PINOT <fggpinot@GMAIL.COM>
Sent: Wednesday 1 September 2021 12:46
To: CSOUND-DEV@LISTSERV.HEANET.IE <CSOUND-DEV@LISTSERV.HEANET.IE>
Subject: Re: [Csnd-dev] [EXTERNAL] [Csnd-dev] Contribution to the plugins repository
 
I agree with Victor. To complete the third point, we could have a page with links dedicated to these plugins on  https://csound.com/ so that people can have a unique reference place to access the different repos.

François

Le mer. 1 sept. 2021 à 09:59, Victor Lazzarini <Victor.Lazzarini@mu.ie> a écrit :
So here’s my thoughts about this

1) as it involves a complete set of third-party files, with a different licence (even though compatible with the current license we use),
it may not be suitable for addition to the Csound code. Even though it does not have external dependencies, we are still dependent on
other code that may need to be maintained, which is different from a set of opcodes wholly written by the contributor.

2) it is then a question of whether it suits the plugins library, as it is a lower risk project. In principle, while the issue raised in 1)
does not go away, it may be less of a problem here. The problem continues to be that we are adding code to a project that does not
yet have any long-term maintainer, and if for some reason this code fails to work in one way or the other, there is no one committed
to follow it up and getting things fixed, as well as preparing releases etc for it.

3) and so we ask why does it need to be placed there, when it can be maintained by yourself in your repository, as Rory quite rightly
noted in his comments.

It would be interesting to hear opinions from other contributors.
========================
Prof. Victor Lazzarini
Maynooth University
Ireland

> On 1 Sep 2021, at 00:27, Michael Gogins <michael.gogins@gmail.com> wrote:
>
> As currently built, the opcodes I was planning to contribute have external dependencies.
>
> However, it would be pretty easy to get rid of the CMask external dependency for the cmask opcodes just by importing the source code from the cmask repository into the Csound repository. The license should not be an issue, it is compatible with LGPLv2.1. The code is straightforward C++.
>
> Regards,
> Mike
>
> -----------------------------------------------------
> Michael Gogins
> Irreducible Productions
> http://michaelgogins.tumblr.com
> Michael dot Gogins at gmail dot com
>
>
> On Tue, Aug 31, 2021 at 2:15 PM Victor Lazzarini <Victor.Lazzarini@mu.ie> wrote:
> Mike,
>
> these are good contributions, but I think they are better suited to be kept as third-party packages which you can maintain in your own repository.
>
> The plugins repository is not really meant for this. Particularly as we do not have a maintainer. It will increase the complexity of upkeep and making release packages.
>
> However, if any of the opcodes below have no dependencies, then you could considef adding it to the Csound repository and it will be maintained there.
>
> The basic principles at the moment are:
>
> 1) have dependencies: keep them as a third-party library.
>
> 2) no dependencies: either keep them
> as a third-party library or contribute them to the Csound repository. In that case, if it's in C, add it as builtin linkage, otherwise add it as a plugin.
>
> Of course if we can find someone committed to maintain the plugins repository on a long-term basis, producing release packages etc, then they can decide on other rules for expanding the repository.
>
> For the moment, I am against any new code being added to the plugins repository that has not originated in the Csound sources.
> It had been hard work putting this into
> shape and it is in a fragile state as it is.
>
> best regards
>
> Prof. Victor Lazzarini
> Maynooth University
> Ireland
>
>> On 31 Aug 2021, at 17:09, Michael Gogins <michael.gogins@gmail.com> wrote:
>>
>> 
>> WARNINGThis 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.
>> I am planning to contribute the following plugin opcode libraries to https://github.com/csound/plugins, and probably more in the future. These have external dependencies.
>>
>> 1. CMask opcodes, depends on https://github.com/gogins/cmask. This provides all the facilities of Andre Bartetzki's CMask program as Csound opcodes.
>>
>> 2. MVerb opcode, depends on https://github.com/LancePutnam/Gamma. This provides a C++ implementation of Jon Christopher Nelson's Cabbage VST plugin for Jon Dattoro's reverb algorithm, as a Csound opcode.
>>
>> 3. musicxml opcodes, depends on https://github.com/grame-cncm/libmusicxml. These opcodes translate either a MusicXML text file, or a string containing MusicXML text, into a Csound score and schedules that score during performance. This enables Csound, given a suitable orchestra, to render scores exported from notation software such as MuseScore directly,
>>
>> Obviously, dependencies in the form of "system packages" don't need much beyond a CMake "find" facility. But these dependencies don't exist as system packages, and must be built from sources.
>>
>> My current thinking is to create a common plugins/dependencies directory, and put all the source code dependencies of all the plugins in that directory, as Git submodules.
>>
>> What do you think? Do you have a better idea?
>>
>> Regards,
>> Mike
>>
>> -----------------------------------------------------
>> Michael Gogins
>> Irreducible Productions
>> http://michaelgogins.tumblr.com
>> Michael dot Gogins at gmail dot com


Date2021-09-01 13:43
FromMichael Gogins
SubjectRe: [Csnd-dev] [EXTERNAL] [Csnd-dev] Contribution to the plugins repository
Thanks for asking!

TL;DR: I'm tempted... but no. 

My pros:

--  Csound is the best instrument for my music, and I do track alternatives. Maintaining plugins might help keep Csound competitive.

-- The Csound community is deep and broad, and unified to some extent in its use of Csound. Maintaining plugins might help prevent Csound from splintering into platform-based communities.

-- Having a single source for extensions to Csound would make it MUCH easier for newcomers to get up to speed. Maintaining plugins would certainly help with that.

My cons:

-- When I work on software, I enjoy the work. When I compose, if I like what I hear, I am ECSTATIC. No contest there!

-- Since 1980, I've spent roughly 3 hours developing software for every hour spent composing. I'm getting older and I need to focus on composing. This is the main reason.

-- I don't have a Windows development system or a Mac OS development system, and maintaining them all would be a burden.

I will propose a solution in another email.

Regards,
Mike


-----------------------------------------------------
Michael Gogins
Irreducible Productions
http://michaelgogins.tumblr.com
Michael dot Gogins at gmail dot com


On Wed, Sep 1, 2021 at 1:36 AM Rory Walsh <rorywalsh@ear.ie> wrote:
Hi Mike, is the any way would you be willing to maintain the repo and manage future releases for Windows and MacOS? 

On Wed 1 Sep 2021, 12:27 a.m. Michael Gogins, <michael.gogins@gmail.com> wrote:
As currently built, the opcodes I was planning to contribute have external dependencies.

However, it would be pretty easy to get rid of the CMask external dependency for the cmask opcodes just by importing the source code from the cmask repository into the Csound repository. The license should not be an issue, it is compatible with LGPLv2.1. The code is straightforward C++.

Regards,
Mike

-----------------------------------------------------
Michael Gogins
Irreducible Productions
http://michaelgogins.tumblr.com
Michael dot Gogins at gmail dot com


On Tue, Aug 31, 2021 at 2:15 PM Victor Lazzarini <Victor.Lazzarini@mu.ie> wrote:
Mike,

these are good contributions, but I think they are better suited to be kept as third-party packages which you can maintain in your own repository.

The plugins repository is not really meant for this. Particularly as we do not have a maintainer. It will increase the complexity of upkeep and making release packages.

However, if any of the opcodes below have no dependencies, then you could considef adding it to the Csound repository and it will be maintained there.

The basic principles at the moment are:

1) have dependencies: keep them as a third-party library.

2) no dependencies: either keep them
as a third-party library or contribute them to the Csound repository. In that case, if it's in C, add it as builtin linkage, otherwise add it as a plugin.

Of course if we can find someone committed to maintain the plugins repository on a long-term basis, producing release packages etc, then they can decide on other rules for expanding the repository.

For the moment, I am against any new code being added to the plugins repository that has not originated in the Csound sources.
It had been hard work putting this into
shape and it is in a fragile state as it is.

best regards

Prof. Victor Lazzarini
Maynooth University
Ireland

On 31 Aug 2021, at 17:09, Michael Gogins <michael.gogins@gmail.com> 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.

I am planning to contribute the following plugin opcode libraries to https://github.com/csound/plugins, and probably more in the future. These have external dependencies.

1. CMask opcodes, depends on https://github.com/gogins/cmask. This provides all the facilities of Andre Bartetzki's CMask program as Csound opcodes.

2. MVerb opcode, depends on https://github.com/LancePutnam/Gamma. This provides a C++ implementation of Jon Christopher Nelson's Cabbage VST plugin for Jon Dattoro's reverb algorithm, as a Csound opcode.

3. musicxml opcodes, depends on https://github.com/grame-cncm/libmusicxml. These opcodes translate either a MusicXML text file, or a string containing MusicXML text, into a Csound score and schedules that score during performance. This enables Csound, given a suitable orchestra, to render scores exported from notation software such as MuseScore directly,

Obviously, dependencies in the form of "system packages" don't need much beyond a CMake "find" facility. But these dependencies don't exist as system packages, and must be built from sources.

My current thinking is to create a common plugins/dependencies directory, and put all the source code dependencies of all the plugins in that directory, as Git submodules.

What do you think? Do you have a better idea?

Regards,
Mike

-----------------------------------------------------
Michael Gogins
Irreducible Productions
http://michaelgogins.tumblr.com
Michael dot Gogins at gmail dot com

Date2021-09-01 15:20
FromSteven Yi
SubjectRe: [Csnd-dev] [EXTERNAL] [Csnd-dev] Contribution to the plugins repository
+1 for distribution like deken. We've talked about this regularly over the last years and the risset has been the closest so far to being a solution for this for Csound. I've suggested something like this before, but I think with latest technology stacks this might be possible:

1. Github template repository [1]  for pluginlib(s) that has Github actions pre-worked out would be good. Ideally builds for multiple platforms/architectures, auto-generates documentation site to gh-pages, and pushes releases on builds. Manifest generated for opcode lib.
2. Binary package manager allows adding github repo for downloading opcode lib(s).
3. Binary package manager has a central "default list" for discovery that contains links to github repos (i.e, could include csound/plugins, csound-plugins, Rory's plugins, etc.). User then starts off with a curated list to pick from but could also add custom repos for testing. Developers can submit PRs to the central when their libraries are tested out and ready for wider availability.

Maintenance of code that isn't central to the Csound system by developers that do not have domain knowledge has cost many cycles over the years when it was in the main repo. It forced devs to spend time on code they may not understand well and was a cause of errors when devs tried to update code thinking they understood the original code implementation and intention but did not. It also causes a situation where knowledge of system changes doesn't naturally spread out since a few people take it upon themselves to keep everything up to date rather than end developers naturally having to update their own code and learn about changes. I don't think repeating that same system for csound/plugins where a few people have to maintain other people's work and not learning lessons of the past makes any sense.

I think if the above is implemented, we get:

1. Developers focus on the parts they have expertise in
2. Developers have an easy guided way to create and publish plugin libs
3. Users get an easy way to discover and install plugins
4. Code naturally grows or decays by interest (and not force).


On Wed, Sep 1, 2021 at 5:25 AM Eduardo Moguillansky <eduardo.moguillansky@gmail.com> wrote:
I agree with victor that plugins should be hosted by the maintainer.
Setting CI integration for multiple platforms, which is something that
the csound/plugins repository still does not have, is incredibly tedious
and time-intensive, the complexity of this task being exponentially
related to the number of dependencies, where each new library might
itself have dependencies with obscure incantations needed when building
remotely.

 From my perspective, the best way to aggregate/distribute plugins is to
follow projects like deken, where plugin maintainers can upload binaries
while each author is responsible for building and testing such binaries.

regards,
Eduardo

On 01.09.21 09:59, Victor Lazzarini wrote:
> So here’s my thoughts about this
>
> 1) as it involves a complete set of third-party files, with a different licence (even though compatible with the current license we use),
> it may not be suitable for addition to the Csound code. Even though it does not have external dependencies, we are still dependent on
> other code that may need to be maintained, which is different from a set of opcodes wholly written by the contributor.
>
> 2) it is then a question of whether it suits the plugins library, as it is a lower risk project. In principle, while the issue raised in 1)
> does not go away, it may be less of a problem here. The problem continues to be that we are adding code to a project that does not
> yet have any long-term maintainer, and if for some reason this code fails to work in one way or the other, there is no one committed
> to follow it up and getting things fixed, as well as preparing releases etc for it.
>
> 3) and so we ask why does it need to be placed there, when it can be maintained by yourself in your repository, as Rory quite rightly
> noted in his comments.
>
> It would be interesting to hear opinions from other contributors.
> ========================
> Prof. Victor Lazzarini
> Maynooth University
> Ireland
>
>> On 1 Sep 2021, at 00:27, Michael Gogins <michael.gogins@gmail.com> wrote:
>>
>> As currently built, the opcodes I was planning to contribute have external dependencies.
>>
>> However, it would be pretty easy to get rid of the CMask external dependency for the cmask opcodes just by importing the source code from the cmask repository into the Csound repository. The license should not be an issue, it is compatible with LGPLv2.1. The code is straightforward C++.
>>
>> Regards,
>> Mike
>>
>> -----------------------------------------------------
>> Michael Gogins
>> Irreducible Productions
>> http://michaelgogins.tumblr.com
>> Michael dot Gogins at gmail dot com
>>
>>
>> On Tue, Aug 31, 2021 at 2:15 PM Victor Lazzarini <Victor.Lazzarini@mu.ie> wrote:
>> Mike,
>>
>> these are good contributions, but I think they are better suited to be kept as third-party packages which you can maintain in your own repository.
>>
>> The plugins repository is not really meant for this. Particularly as we do not have a maintainer. It will increase the complexity of upkeep and making release packages.
>>
>> However, if any of the opcodes below have no dependencies, then you could considef adding it to the Csound repository and it will be maintained there.
>>
>> The basic principles at the moment are:
>>
>> 1) have dependencies: keep them as a third-party library.
>>
>> 2) no dependencies: either keep them
>> as a third-party library or contribute them to the Csound repository. In that case, if it's in C, add it as builtin linkage, otherwise add it as a plugin.
>>
>> Of course if we can find someone committed to maintain the plugins repository on a long-term basis, producing release packages etc, then they can decide on other rules for expanding the repository.
>>
>> For the moment, I am against any new code being added to the plugins repository that has not originated in the Csound sources.
>> It had been hard work putting this into
>> shape and it is in a fragile state as it is.
>>
>> best regards
>>
>> Prof. Victor Lazzarini
>> Maynooth University
>> Ireland
>>
>>> On 31 Aug 2021, at 17:09, Michael Gogins <michael.gogins@gmail.com> wrote:
>>>
>>> 
>>> WARNINGThis 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.
>>> I am planning to contribute the following plugin opcode libraries to https://github.com/csound/plugins, and probably more in the future. These have external dependencies.
>>>
>>> 1. CMask opcodes, depends on https://github.com/gogins/cmask. This provides all the facilities of Andre Bartetzki's CMask program as Csound opcodes.
>>>
>>> 2. MVerb opcode, depends on https://github.com/LancePutnam/Gamma. This provides a C++ implementation of Jon Christopher Nelson's Cabbage VST plugin for Jon Dattoro's reverb algorithm, as a Csound opcode.
>>>
>>> 3. musicxml opcodes, depends on https://github.com/grame-cncm/libmusicxml. These opcodes translate either a MusicXML text file, or a string containing MusicXML text, into a Csound score and schedules that score during performance. This enables Csound, given a suitable orchestra, to render scores exported from notation software such as MuseScore directly,
>>>
>>> Obviously, dependencies in the form of "system packages" don't need much beyond a CMake "find" facility. But these dependencies don't exist as system packages, and must be built from sources.
>>>
>>> My current thinking is to create a common plugins/dependencies directory, and put all the source code dependencies of all the plugins in that directory, as Git submodules.
>>>
>>> What do you think? Do you have a better idea?
>>>
>>> Regards,
>>> Mike
>>>
>>> -----------------------------------------------------
>>> Michael Gogins
>>> Irreducible Productions
>>> http://michaelgogins.tumblr.com
>>> Michael dot Gogins at gmail dot com