4 ms·
I've used CSound for a university project some years ago, to manipulate a bunch of files to play together - adjust volumes, modify speed of playing without modi
by musikele 7y ago
I've used CSound for a university project some years ago, to manipulate a bunch of files to play together - adjust volumes, modify speed of playing without modifying tonality, etc.
I then wrote a GUI to manage CSound. After 8 years, here's what I remember:
- It was very complicated to wrap a C library in Java, at least for a new graduate like me.
- There was no learning material for the kind of things I needed to do (manipulating wav files). learing CSound at the time was a mess - no blog posts in 2010.
- If I read the CSound source file I wrote in 2010 I'm sure I would not understand a single line.
Some years later, when Coursera was just starting to offer free courses to the world, I encountered another musical programming language called ChucK (https://chuck.cs.princeton.edu/ https://chuck.cs.princeton.edu/). The course was very well done and ChucK too, was so simple that I almost decided to rewrite the whole project with it. I wrote some very nice pieces of music while studying ChucK.
Good luck to all the musicians out there!
- DonHopkins 7y agoI don't know what the state of CSound's SWIG support was when you integrated it with Java by hand, but CSound now uses SWIG to generate Python and Java wrappers. (I know what you mean: writing wrappers for something as complex as CSound for any language is an enormous tedious error-prone pain in the wazoo, which is why it's so nice to have a tool like SWIG that does it automatically for you.) http://write.flossmanuals.net/csound/a-the-csound-api/ http://write.flossmanuals.net/csound/a-the-csound-api/ The cool thing about SWIG (Scripting Wrapper and Interface Generator) is that it supports multiple scripting languages (and other kinds of languages, since it's debatable if Java is a "scripting language"). It understands most of C++, so it can automatically read in header files and generate wrappers from them, but you can also tailor and customize the interfaces and how it marshals different data types back and forth, to create more efficient, convenient wrappers, too. http://www.swig.org/ http://www.swig.org/ SWIG is the brainchild of David Beazley, Python hacker extraordinaire. His talks are amazing! https://www.dabeaz.com/talks.html https://www.dabeaz.com/talks.html https://en.wikipedia.org/wiki/David_M._Beazley https://en.wikipedia.org/wiki/David_M._Beazley >David Beazley is an American software engineer. He has made significant contributions to the Python developer community, which includes writing the definitive Python reference text Python Essential Reference, the SWIG software tool for creating language agnostic C and C++ extensions, and the PLY parsing tool. He has served on the program committees for PyCon and the O'Reilly Open Source Convention, and was elected a fellow of the Python Software Foundation in 2002.
- HelloNurse 7y agoChoices like wrapping a C library from Java in order to use CSound and using CSound to play WAV files in the first place seem very against the grain. A project about playing back recorded audio with interactive control should be feasible in Java, dispensing with CSound and JNI complications entirely, while a project to do something with CSound could focus on the strong points of CSound and avoid technical hurdles (e.g. Java programs that generate highly complex CSound code for highly complex music).
- afandian 7y agoChucK brings back memories! I was involved with the Oxford Laptop Orchestra in 2012, and did a few "programming for musicians" lessons in ChucK. Writeups here: https://blog.afandian.com/tags/oxlork/ https://blog.afandian.com/tags/oxlork/