[Csnd] old retro csound for dos 6.22

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… :person_facepalming:

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. :smiley:

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. :smiley:

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) · GitHub

      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

      Got 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) · GitHub

      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

                                  *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) · GitHub

      This 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) · GitHub

      In 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 install

btw, 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) · GitHub

      What 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... :confused:

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) · GitHub

      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.
      ========================
      Prof. Victor
      Lazzarini
      Maynooth
      University
      Ireland

      > On 6 Nov
      2021, at
      20:07, Aaron
      Krister
      Johnson
      <akjmicro@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.
      > 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 :stuck_out_tongue:
      >
      > 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
      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 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 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