What opcodes are you referring to? Most of the internal opcodes can’t be disabled. But you can always just thrash any opcode libraries/interfaces you don’t want.
Btw there is a cmake flag that will list all possible Csound options but I can’t recall what it is… ![]()
Hi Rory,
Re: thrashing…I am not sure that is true.
And what would be the method of doing so?
What I have tried has failed.
Maybe you misunderstood my comment. We removed almost all opcode libs with external dependencies from the main repo into the plugins repo. That is all we did, all other opcodes are still in the main repo. You can also configure the build to remove some elements in the build though cmake options.
John ffitch has worked on a version of Csound 7 that attempts to make custom builds of Csound with only selected opcodes. That is in the minimal7 branch and is described in his ICSC2022 paper.
And Rory is right to say that you can now build Csound (version 7, from the develop branch) with no dependencies at all. This opens the possibility of running Csound on bare metal, perhaps, if the standard C lib is present.
Prof. Victor Lazzarini
Maynooth University
Ireland
Got it, Victor, thanks.
So, essentially, my best bet is to clone minimal 7 and give that a go?
Well, that is a possibility. Maybe John can give you more details about this project.
Note also that Csound 7 is very much beta at the moment.
Prof. Victor Lazzarini
Maynooth University
Ireland
Victor:
I had a look at the gihub compare diff. Looks like what John was doing makes sense: #ifdef and #endif macros to wrap opcode-related definitions. It looks controlled from a header file – so I take to that to disable an opcode from being built, one puts
either // in front of it, or for a block, /* ... */ ???
Or, is this controllable from the build process with definition statements? (I actually think the former is straightforward and easier if one disables a huge amount of them).
Csound is feeling almost “too large” for me at the moment, and I’m thinking that if I cannot trim it down in a user-friendly way, I need to start using other options available to me. I know that’s a person thing, but I don’t like how “everything AND the kitchen sink” is thrown in there. ![]()
Thanks for your help in this.
Aaron,
Check out the paper - John has a utility that does the work for you/us.
And, John would love to discuss his approach with you too,
Hi Aaron, by thrashing I simply mean deleting the opcodes you don’t need. You can safely remove the entire opcodes6dir64 directory if you have no need for the opcoes contained within.
Rory - Thanks, I’ll give it a try. Has this been verified?
Dr. B., and John ffitch – read the paper. It was well-laid out and clear. Appreciate the tip (and the effort, John, to push Csound in this direction).
I still owe Steven and/or others a working example of zak opcodes not working. Sorry, will try to get one tonight. In the meantime, I’ll probably migrate away from them anyhow in favor of old-skool globals and/or chn[get|set].
Thanks,
Rory - Thanks, I’ll give it a try. Has this been verified?
Just nuke your OPCODE6DIR64 env var and see for yourself. All the opcodes in that directory are plugins.
Csound mailing list Csound@listserv.heanet.ie https://listserv.heanet.ie/cgi-bin/wa?A0=CSOUND Send bugs reports to https://github.com/csound/csound/issues Discussions of bugs and features can be posted here
I’ve been enjoying this thread for some time now. (The idea of a Minimal Csound is dear to my heart.) Perhaps the following is relevant here.
Two years ago I undertook (and presented to this list) a Windows project:
CSOUND TO GO:
A Minimal Windows Csound on a Stick (2020)
It can be accessed at: [http://arthunkins.com/articles.htm](http://arthunkins.com/articles.htm) (the second item). The article demonstrates how to create your own 6MB Windows 6.15 version of Csound on a USB drive. Currently I do all of my Csound work on such a drive.
One advantage is that *any* average user (like me) can do the same without special knowledge. I assume something similar might apply to other systems
If you mean nothing but gen routines, oscil, adsr i agree somewhat and kind of want to do it as a both learning exercise and because i want my own functionality like calling the lib and writing nested csds in strings written to function tables for instance which doing that would be required but there is much noise with 7
Catrcing up with email...
Victor:
I had a look at the gihub compare diff. Looks like what John was doing makes
sense: #ifdef and #endif macros to wrap opcode-related definitions. It looks
controlled from a header file -- so I take to that to disable an opcode from
being built, one puts
either `//` in front of it, or for a block, `/* ... */` ???
Speaking fron a minimak7 point of viewno, that iis te wrong approasch. The headerfile H/opcodes.h givesa list og opcdes ti be includedof the optioal ones. This list is not complete ut could be extended fr your desires. Do you havec an idea of which opcodes or classes of opcde you want to remove ? I couldrtn restart work on this branch. You can cotact me via email or use te csound-dev mailig list.
Or, is this controllable from the build process with definition statements? (I
actually think the former is straightforward and easier if one disables a huge
amount of them).Csound is feeling almost "too large" for me at the moment, and I'm thinking
that if I cannot trim it down in a user-friendly way, I need to start using
other options available to me. I know that's a person thing, but I don't like
how "everything AND the kitchen sink" is thrown in there.Thanks for your help in this.
Aaron Krister Johnson
Music, etc.:
http://www.untwelve.org
https://www.youtube.com/channel/UC_utjGYbSizWE0dNyr0Vdmg
Stream Aaron Krister Johnson music | Listen to songs, albums, playlists for free on SoundCloud
Stream filtercreed music | Listen to songs, albums, playlists for free on SoundCloud
https://aaronkristerjohnson.bandcamp.com/
Code:
akjmicro (Aaron Krister Johnson) · GitHubWell, that is a possibility. Maybe John can give you more details
about this project.
Note also that Csound 7 is very much beta at the moment.Prof. Victor Lazzarini Maynooth University
IrelandGot it, Victor, thanks.
So, essentially, my best bet is to clone `minimal 7` and give that
a go?Aaron Krister Johnson
Music, etc.:
http://www.untwelve.org
https://www.youtube.com/channel/UC_utjGYbSizWE0dNyr0Vdmg
Stream Aaron Krister Johnson music | Listen to songs, albums, playlists for free on SoundCloud
Stream filtercreed music | Listen to songs, albums, playlists for free on SoundCloud
https://aaronkristerjohnson.bandcamp.com/
Code:
akjmicro (Aaron Krister Johnson) · GitHubMaybe you misunderstood my comment. We removed almost
all opcode libs with external dependencies from the
main repo into the plugins repo. That is all we did,
all other opcodes are still in the main repo. You can
also configure the build to remove some elements in
the build though cmake options.
John ffitch has worked on a version of Csound 7 that
attempts to make custom builds of Csound with only selected
opcodes. That is in the minimal7 branch and is described in
his ICSC2022 paper.And Rory is right to say that you can now build Csound
version 7, from the develop branch with no dependencies at
all. This opens the possibility of running Csound on bare
metal, perhaps, if the standard C lib is present.Prof. Victor Lazzarini Maynooth University
Ireland*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.Although -- this still doesn't tell me how to disable
various opcodes from being built....These options in the file mentioned have nothing to do
with choosing subsets of opcodes in a modular way.Aaron Krister Johnson
Music, etc.:
http://www.untwelve.org
https://www.youtube.com/channel/UC_utjGYbSizWE0dNyr0Vdmg
Stream Aaron Krister Johnson music | Listen to songs, albums, playlists for free on SoundCloud
Stream filtercreed music | Listen to songs, albums, playlists for free on SoundCloud
https://aaronkristerjohnson.bandcamp.com/
Code:
akjmicro (Aaron Krister Johnson) · GitHubThis is helpful, thanks..
Aaron Krister Johnson
Music, etc.:
http://www.untwelve.org
https://www.youtube.com/channel/UC_utjGYbSizWE0dNyr0Vdmg
Stream Aaron Krister Johnson music | Listen to songs, albums, playlists for free on SoundCloud
Stream filtercreed music | Listen to songs, albums, playlists for free on SoundCloud
https://aaronkristerjohnson.bandcamp.com/
Code:
akjmicro (Aaron Krister Johnson) · GitHubIn the Csound repo there is a
Custom.cmake.ex file. Open it and
disable all the features you want.
Then save that file as Custom.cmake
Then run
mkdir build && cd build
cmake ..
make
make installbtw, you can also run cmake-gui, open the
Csound repo from it and you can easily set
the build options through a user
interface. It will configure cmake for
you, but you will still need to run make
from the build dir.Linux Mint 21
So, what file are you talking about?
I need specifics. `CMakeLists.txt`?I am more familiar with
`./configure; make; make install`
dances than I am with `cmake` and
what goes into it, for starters.Aaron Krister Johnson
Music, etc.:
http://www.untwelve.org
https://www.youtube.com/channel/UC_utjGYbSizWE0dNyr0Vdmg
Stream Aaron Krister Johnson music | Listen to songs, albums, playlists for free on SoundCloud
Stream filtercreed music | Listen to songs, albums, playlists for free on SoundCloud
https://aaronkristerjohnson.bandcamp.com/
Code:
akjmicro (Aaron Krister Johnson) · GitHubWhat platform are you
trying to build for? I
typically disable all
options in a custom
cmake file when I'm
building. I can dig up
one of my 'disable
everything' custom cmake
files for you tomorrow
if you like. Btw, I
think Victor might have
recently made some
changes so that even
libsndfile isno longer
needed.Reviving this old
thread...Victor: you said:
"""
At the moment, the only
dependency needed for
Csound is libsndfile.
With it, you can build a
Csound version
which is fairly lean and
small. Most plugins have
been moved out to a
separate repo anyway."""
So, looking at the code,
it's all over the place.
I don't get a clean
sense that one can, as
suggested, simply remove
references in
`CMakeLists.txt` and not
build a family of
opcodes.For starters, I've tried
that, and I get
compilation errors
galore...References to various
helper functions needed
in multiple places are
all over in different
files, some of which if
I make invisible to
`cmake` thinking that
they simply define an
unwanted opcode, it ends
up destroying a
low-level library
reference that was
thrown into the same
file; opcode registry
entries sometimes are
found within the module
that defines the opcode;
sometimes in things like
`entry1.c`. Csound is
brilliant and does
amazing things, but TBH,
this codebase needs some
love if it indeed
promises to be modular
in a user-friendly way.It's really hard to wrap
my head around where
things live other than
`ag` or `grep`, and
then, I find there's no
consistent rhyme or
reason why things live
where they do -- it all
seems to be a product of
a messy evolution.That said, there may be
an easy answer here. I'm
just not seeing it yet.Ultimately, I'd like to
build a "diet" version
and have good old
fashioned `./configure
--no-fft-opcodes
--no-pvc-opcodes` style
of disabling certain
opcodes, if that makes
sense. How do I do that,
precisely) in the
current `cmake`
structure?I think I need some
hand-holding from an ace
dev who knows the layout
of this code
top-to-bottom: OR --
simple instructions,
step-by-step on how one
might do this....the
statement "It can be
done" hasn't been
helpful so far, as I've
taken the time to try, a
couple of hours at
least, and it's fallen
flat with no joy.Aaron Krister Johnson
Music, etc.:
http://www.untwelve.org
https://www.youtube.com/channel/UC_utjGYbSizWE0dNyr0Vdmg
Stream Aaron Krister Johnson music | Listen to songs, albums, playlists for free on SoundCloud
Stream filtercreed music | Listen to songs, albums, playlists for free on SoundCloud
https://aaronkristerjohnson.bandcamp.com/
Code:
akjmicro (Aaron Krister Johnson) · GitHubAt the
moment, the
only
dependency
needed for
Csound is
libsndfile.
With it, you
can build a
Csound
version
which is
fairly lean
and small.
Most plugins
have been
moved out to
a separate
repo anyway.
========================
Prof. Victor
Lazzarini
Maynooth
University
Ireland> On 6 Nov
2021, at
20:07, Aaron
Krister
Johnson
<akjmicro@gmail.com>
wrote:
>
WARNINGThis
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.
> This whole
thread
reminds me
of a
question
I've kind of
had in the
back of my
mind: how
possible
would it be
to create a
"modular/manual"
build so
that one can
compile a
csound
binary with
only the
opcodes one
wants/needs?
>
> I.E. lean
and mean --
relates to
retro
computing
and the
whole
embedded/tiny
device idea.
>
> Aaron
Krister
Johnson
>
http://www.untwelve.org
>
> On Mon,
Nov 1, 2021
at 9:12 PM
Iain Duncan
<iainduncanlists@gmail.com>
wrote:
> Please
post the
links when
you do! This
thread made
me smile. I
think my
first csound
experience
was on NeXT
in about '95
at UBC but I
remember
running it
in DOS
windows too
at home
around then.
>
> iain
>
> On Wed,
Oct 27, 2021
at 8:55 PM
Josh Moore
<kh405.7h30ry@gmail.com>
wrote:
> yup
version 4
runs, i
didn't
bother with
version 6 as
it probably
needs
windows
which would
kind of go
against the
doscember
thing. every
year all the
vintage
computer
people (lazy
game
reviews,
adrian's
digital
basement,
etc) do
youtube
videos of
nothing but
DOS stuff...
fast tracker
ii was what
i started
out with so
it's kinda
nostalgic
for me too,
wanted to do
it last year
but didn't.
>
> found the
manual for
4.10 as well
so i know
what opcodes
are
available.
that's
really all i
need, now i
can generate
wavetables
and drum
sounds to
stick in my
fast tracker
ii
>
> On Wed,
Oct 27,
2021, 6:40
PM Richard
Knight
<richard@1bpm.net>
wrote:
>
Unfortunately
I don't
think this
works in DOS
proper, I
tried it in
> dosemu
(which did
run the
older v4
binary OK)
and it
reports
> This
program
cannot be
run in DOS
mode.
>
> On
2021-10-27
23:39,
rasmus ekman
wrote:
> > Here's
one that
reports as
6.08
doubles,
from 2016:
> >
https://abc.se/~re/Stuff/Csound-DOS-608.zip
> >
> > I don't
think I had
fiddled with
the code...
- ah, just
added the
vosim
> > opcode
> >
E:\DevProjects\Csound\msvc\Csound-6.09.1\Release>csound-dos-608
> > 0dBFS
level =
32768.0
> > --Csound
version 6.08
(double
samples) Dec
29 2016
> > [commit:
GIT_HASH_VALUE]
> >
libsndfile-1.0.25
> > Usage:
csound
[-flags]
orchfile
scorefile
> > Legal
flags are:
> > ...
> >
> > Regards,
> >
> >
/re
> >
> > Den
2021-10-27
kl. 09:08,
skrev Josh
Moore:
> >> does
anyone have
this? i'm
building an
old
fasttracker
2 box and it
> >> would
be neat to
have to
make/modify
samples in
> >> Csound
mailing list
Csound@listserv.heanet.ie
> >>
<mailto:Csound@listserv.heanet.ie>
> >>
LISTSERV 16.5 - CSOUND List at LISTSERV.HEANET.IE
Send bugs
reports to
> >>
Issues · csound/csound · GitHub
Discussions
of bugs and
> >>
features can
be posted
here
> >
> > Csound
mailing list
> >
Csound@listserv.heanet.ie
> >
LISTSERV 16.5 - CSOUND List at LISTSERV.HEANET.IE
> > Send
bugs reports
to
> >
Issues · csound/csound · GitHub
> >
Discussions
of bugs and
features can
be posted
here
>
> Csound
mailing list
>
Csound@listserv.heanet.ie
>
LISTSERV 16.5 - CSOUND List at LISTSERV.HEANET.IE
> Send bugs
reports to
>
Issues · csound/csound · GitHub
>
Discussions
of bugs and
features can
be posted
here
> Csound
mailing list
Csound@listserv.heanet.ie
LISTSERV 16.5 - CSOUND List at LISTSERV.HEANET.IE
Send bugs
reports to
Issues · csound/csound · GitHub
Discussions
of bugs and
features can
be posted
here
> Csound
mailing list
Csound@listserv.heanet.ie
LISTSERV 16.5 - CSOUND List at LISTSERV.HEANET.IE
Send bugs
reports to
Issues · csound/csound · GitHub
Discussions
of bugs and
features can
be posted
here
> Csound
mailing list
Csound@listserv.heanet.ie
LISTSERV 16.5 - CSOUND List at LISTSERV.HEANET.IE
Send bugs
reports to
Issues · csound/csound · GitHub
Discussions
of bugs and
features can
be posted
hereCsound
mailing list
Csound@listserv.heanet.ie
LISTSERV 16.5 - CSOUND List at LISTSERV.HEANET.IE
Send bugs
reports to
Issues · csound/csound · GitHub
Discussions
of bugs and
features can
be posted
hereCsound mailing list
Csound@listserv.heanet.ie
LISTSERV 16.5 - CSOUND List at LISTSERV.HEANET.IE
Send bugs reports to
Issues · csound/csound · GitHub
Discussions of bugs and
features can be posted
hereCsound mailing list
Csound@listserv.heanet.ie
LISTSERV 16.5 - CSOUND List at LISTSERV.HEANET.IE
Send bugs reports to
Issues · csound/csound · GitHub
Discussions of bugs and
features can be posted hereCsound mailing list
Csound@listserv.heanet.ie
LISTSERV 16.5 - CSOUND List at LISTSERV.HEANET.IE
Send bugs reports to
Issues · csound/csound · GitHub
Discussions of bugs and features can
be posted hereCsound mailing list
Csound@listserv.heanet.ie
LISTSERV 16.5 - CSOUND List at LISTSERV.HEANET.IE
Send bugs reports to
Issues · csound/csound · GitHub
Discussions of bugs and features can be
posted hereCsound mailing list Csound@listserv.heanet.ie
LISTSERV 16.5 - CSOUND List at LISTSERV.HEANET.IE Send
bugs reports to
Issues · csound/csound · GitHub Discussions of
bugs and features can be posted hereCsound mailing list Csound@listserv.heanet.ie
LISTSERV 16.5 - CSOUND List at LISTSERV.HEANET.IE Send bugs
reports to Issues · csound/csound · GitHub
Discussions of bugs and features can be posted hereCsound mailing list Csound@listserv.heanet.ie
LISTSERV 16.5 - CSOUND List at LISTSERV.HEANET.IE Send bugs reports
to Issues · csound/csound · GitHub Discussions of bugs and
features can be posted hereCsound mailing list Csound@listserv.heanet.ie
LISTSERV 16.5 - CSOUND List at LISTSERV.HEANET.IE Send bugs reports to
Issues · csound/csound · GitHub Discussions of bugs and features
can be posted hereCsound mailing list Csound@listserv.heanet.ie
LISTSERV 16.5 - CSOUND List at LISTSERV.HEANET.IE Send bugs reports to
Issues · csound/csound · GitHub Discussions of bugs and features can
be posted here
Csound mailing list
Csound@listserv.heanet.ie
Send bugs reports to
Issues · csound/csound · GitHub
Discussions of bugs and features can be posted here
Hi John,
Nice to hear from you, and as always, to you and the other core devs, your excellent work is much appreciated.
My first thought: I wouldn’t want to direct this to be about my whims, but rather, increasing the modularity of the csound codebase and build and configure process so that it isn’t so “hard coupled”.
The ultimate ideal goal by my thinking would be that “anyone can easily roll their own” version.
The process you outline in your paper is a good start, but I think tying these choices to “what I happen to have in a given orchestra” is not what I would be aiming for. I can see that serving a specialized purpose for a single embedded project, but I am more thinking about: making the number of opcode choices smaller for those that don’t need them all, and potentially making the codebase split into various packages so that one doesn’t need to download all the code either. (I realize that is a rather large lift in terms of coding and refactoring, so I don’t expect this would be happening soon, and it might be something rejected as pie in the sky…having said that, downloading individual sub components separately would indicate that the app has reached true modularity and pluggability…all opcodes except some primitive set would be considered pluggable and user-selectable.) Again, the ideal is “roll your own”.
FWIW, my own personal subset, to give you an idea, would consist of all the more basic oscillators, filters, effects, GENS, and MIDI opcodes that one would expect to do 90% of classic synthesis with. I would first get rid of some FFT and Pvoc stuff (although I have used them on occasion for more sound-design theatrical situations). So, one might have separate builds for different needs. I can see some folks not needing synth stuff, but wanting an effects box. So, it would be about giving the most modular and free choice about “what one really uses and needs”.
Again: thanks for all the wonderful work over the years. These should not be read as whiny demands, but ideals from an appreciative user of a powerful system just giving his 2 cents of what an even more ideal future for this app might look like.
-AKJ