Open vlazzarini opened 1 year ago
Hello Victor,
Thankyou for this valuable contribution to the world of computer music.
I hope you don't mind if I share my opinion -- with no expectations or strings attached. I think there are at least two use-cases for the contents of this repo:
(1) requires working code, and so various changes might be required or considered acceptable.
For (2) I would like it if there were branches containing the source texts verbatim without any edits/bug fixes. Then we could compare to branches with fixes/reconstructions/additions. For example it might be interesting to see bugs in the original sources. In addition it would be helpful to include in the readme as much background information about each source as possible, i.e. where and when did it originate, who made any edits, etc.
Let me know if there is anything I can do to help. I'm currently re-reading The Technology of Computer Music and will be reviewing this code in detail.
Best wishes,
Ross.
Thanks for this, @RossBencina. What you are suggesting makes sense and I think it could be a good guiding principle. So from the material we have gathered, a more up-to-date proposal would be:
master: a working version as close as we can get to the one described in the Technology of Computer Music (TCM). This would exclude all added GENS, leaving just 1-3, revert the support for negative frequencies in OSC, include the IOS code quoted in the book. No CONVT functions. All Fortran, 3 separate programs. It would have to include the modifications to pass1.f to allow it to run correctly under modern Fortran, as well as all the arithmetic IFs converted to ordinary IFs, and all the bug fixes to make it comply to the TCM version. We can consider whether we should reinstate the original raw output to 12-bit unsigned or to keep the 32-bit float output. This meets use cases 1 and 2.
SAIL branch: re-instate the version exactly as typed from SAIL. This will not work with modern Fortran compilers, but meets use case 2.
little boy branch: containing the work we did to recreate LB, including all the scores, plus the GENS and CONVT, with the convt switch facility, and code adhering to the 1968 version JCR used, plus the C-code extras to make it run as a single program and write RIFF-Wave files, and the Fortran code modified to be called from C. Use cases 1 and 2.
1968 branch: code typed from the fac-similes we have taken from the Fonds Risset. This will not work with modern compilers, use case 2
Catalogue branch: a working version that runs the catalogue, with the GENS and CONVT added from there. GEN1 etc needs to be modified to use indices 1 to 512 (as per the 1968 version). This meets use cases 1 and 2.
Additions branch: the master version with Chowning's negative frequency support and Moore's FBAM unit generator recreated from Layzer's description. This meets use cases 1 and 2.
In all the "working" branches, we should make sure to keep original code commented out (as we are already doing) and make annotations regarding modifications etc.
This scheme should serve us as we move on with the work. If we find other versions (which we now existed but have not been rescued), we can have new branches to reflect the finds.
We need to reorganise the branches, pruning what's not required and making clear branches are linked to versions.
We also need to decide whether we want to mainstream the c driver program with the fortran code linked to it, or we want to keep it pure fortran in the branches below (with a special cprog branch).
Here's my suggestion
master should contain the version as closely equivalent to the 1969 book.
little-boy branch should be the final reconstruction as close as possible to the 1968 version, with our added CONVT switch
catalogue should contain the cat GENs and convt, using GEN1 from 1968, and the 1969 book code
latest should have the 1975 code and the FBAM additions.