Talk:Csound

From OLPC
Revision as of 21:36, 3 May 2009 by 24.236.91.195 (talk) (cleanup)
Jump to navigation Jump to search

interface

What interface will be used? Csound works on text files normally (although there are a few guis being developed). It seems to me designing csound instruments would be extremely difficult for kids, as fairly advanced concepts from programming and about sound waves would be needed. I am guessing you expect the kids to only make the score files, and have a bunch of instrument files supplied with the laptop. In that case, what interface are you using for creating the score? Even the score text file might be a little daunting for kids. just curious! 216.239.78.133 22:14, 7 February 2007 (EST)

Csound is a library accessed mostly through Python and activities written in that language. But the terminal is there and can be used too! Victor.

notes from dr. b

these need cleaning up

Your interview inspired me so much that I spent the day and night yesterday preparing and posting a nice collection of Csound examples (as .wav, as .mp3, and as actual Csound Orchestras & Scores .csd)

As you identified at the outset, there was a need to better understand:

NOTE: All the files and examples that I link below - run on the XO and have served as XO demos and models for developers. Soon, some will be there for kids to study and modify as well.

In the collections, I have included:

  • the .csd files that actually create the sounds and music (so Bobby could actually compute them all on his laptop!)
  • .wav renderings of the files and music (so you can hear all the variety of styles and sounds that Csound makes)
  • .mp3 conversions of the wav files - so you can put them on your ipod - or post them on the net

also:

the Csound story

Csound is the most powerful software synthesizer and signal processing software package in the world.

http://csounds.com

It is the ultimate cross-platform software. It runs under ALL computer operating systems - Mac, Windows, Linux and the OLPC XO!!!!.

http://wiki.laptop.org/go/Tamtam

All the instruments, all the patches, all the compositions ever developed for Csound over the past 30 years - still all run on ANY and ALL of these computers - including the XO).

Currently, Csound has over 1371 synthesis and signal processing modules (opcodes) - some are simple sound design components like oscillators and filters, whereas some are incredibly powerful and unique synthesizer models and physical models - like moog and voice.

The program was built upon and grew out of the computer music languages developed by at Bell Labs in the 50s and 60s by "the father of computer music" Max Mathews. (and it embodies and preservers ALL the history and knowledge of synthesis, signal processing, and computer music.)

- Csound itself was originally written and developed by Professor Barry Vercoe of the MIT Media Lab in the 70s and it's foundation of opcodes was laid down in 1986. Vercoe has continued to develop his own custom versions of the language to support his research and some of these have been commercialized into Kareoke systems in the mid-90s. In fact, he and his students work on the XO today with a custom version of his original 1986 Csound, but that is not the version supported by OLPC. The version on the G1G1 machines is the LGPL-licensed Csound5 - Free software, available at cSounds.com.

- Since 1986, Csound has continued to be maintained and developed by a huge international community of researchers, professors, computer scientists, musicians, students, and freelancers - primarily lead by me and connected through the csound mailing list, the csound developer's mailing list and cSounds.com.

- This international group of Csound Developers and contributers is huge and continues to grow, but the main developers are - Richard Boulanger (Dr. B. - Boston/Berklee College of Music), John ffitch (in England), Gabriel Maldonado (in Rome), Victor Lazzarini (In Ireland), Michael Gogins (in NY), Steven Yi (in San Francisco), Jean Piché (in Montreal), Matt Ingalls (San Francisco), Anthony Kozar (OH), and Andrés Cabrera (Bogata Columbia) - and many others.

- I have been working closely with both Max Mathews and Barry Vercoe since 1979 (and still do). See the Csound Book http://csounds.com/shop/csound-book

published in 2000, both served to build and solidify the Csound community by publishing chapters on Csound by professors and colleagues from all over the world, and serve as the main college textbook for the study of Computer Music everywhere.
MIT Press is publishing a 3000 page sequel - The Audio Programming Book - in the winter of 2008. (Again with a major Csound focus, but now, we teach musicians to write code!)

- Today, Csound is used by Film Composers, TV Composers, Game Developers, Innovative Electronica and Remix Artists - such as BT, DJ Gomi, Richard Devine, Jeff Rona, Tobias Enhus, Aphex Twin, Autechre, The Track Team, Hans Zimmer, and many many more. How? Well... I have been teaching MIT's Csound to commercial-oriented musicians at Berklee for 21 years and many of my students have gone on to make names for themselves in Hollywood, NY, and with major software developers and game developers all over the US. Also, Jean Piché (the developer of the OLPC XO's flagship music program - TamTam) developed an intuitive front-end for Csound that he calls - Cecilia and many sound designers use this front-end to make amazing sound transformations. http://www.csounds.com/cecilia/

- Csound is currently used on the XO via TamTam and Pippy.

- Tam Tam uses Csound but you would never know it as they hide the Csound Program from the User and wrap it into child-friendly activities and games that allow kids to make sounds, make music, jam, record and transform their voices. TamTam Edit actually allows student to patch together Csound's opcodes (modules) and teaches them all about signals, synthesis, and synthesizers - ANY Csounder in the world would LOVE to have this program running on their Macintosh or Windows laptop - but currently they are made exclusively for the XO! http://wiki.laptop.org/go/Tamtam

- Pippy uses Csound to help teach children the Python programming language and to build XO Activities. http://wiki.laptop.org/go/Pippy

++ Coming Soon to the XO - The Csound Editor, Sampler, Remixer Activities. These are under development by Berklee Alumni Greg Thompson. They will allow children to actually use and learn the Csound Language on the XO and they will serve as models for other Developers who will make their own TamTam like Music Activities for OLPC. Bundled collections and tutorials from The Csound Book.

More on playing csounds with Pippy

Playing .csd files from Pippy

Submitted by Dr.B. on Wed, 02/27/2008 - 21:09.

As I told you all in an email some time ago, this past week at OLPC, with the help of Chris Ball - the author of Pippy - we got Pippy tp list and or play a selected .csd from a folder of .csd files.

(Update your XO - to 656 stable at least)

Here is a collection of .csd compositions to try: http://csounds.com/olpc/4pippyComps.zip

Here is a collection of .csd instruments to try: http://csounds.com/olpc/4pippyInsts.zip

Here is the file to put in pippy to add a playCsound command to the sidebar: http://csounds.com/olpc/playCsound


Here's what you need to do to get Pippy to Play .csd files and add the playcsound command to pippy:

1. copy this attached file onto a USB memory stick, and then into this directory on an XO:

/usr/share/activities/Pippy.activity/data/sound/

2. on the XO, populate /usr/share/csound/csd/ with *.csd files

If you don't remember or know how to mount a USB memory stick and transfer files:

  • go to the terminal activity
  • type to become root:
#su
  • then type:
#mount 
  (to see the dev name)
  • then type:
#mount /dev/sda1 /mnt 
  (now we have created a device with a directory on your XO called /mnt)
  • then type:
#cd /mnt 
  (to change to that directory)
#ls 
  (to list the files you want to copy)

#cp playCsound /usr/share/activities/Pippy.activity/data/sound/

#mkdir /usr/share/csound/csd

#cp *.csd /usr/share/csound/csd/
  • when you are done transferring you should type:
#umount /dev/sda1


In Pippy, by default, it will try to play the piece Maple7.csd. But... if you don't have Maple7 in your collection, you erase that orchestra name from the line csd_toplay = 'Maple7.csd' and you just leave that blank and hit the run button. As you can see from the code, if that line has no argument, it will list all the .csd files in your /usr/share/csound/csd folder and you could just type in one of those names.

playing sound samples -- wav or ogg files

There are nice tutorials (Csound-Python and Csound tutorials, among others) about csound and csd files, but they all seem to focus on synthesizing sound, to the exclusion of playing a pre-recorded sound sample. If I have .wav or .ogg files that I want to play, how do I do that with csound? Or do I need to use something different?

As far as I can tell, TamTam uses csound both to play its WAV files (samples) and to synthesize sound. But TamTam's code is complicated enough that I haven't yet figured out how to just play sample files. tamtam\common\util has:

 _addInstrument( "hey", INST_SIMP, MID, 'people', 0, 0, 0, 0.5 )

where INST_SIMP seems to correlate with sounds that are recorded samples, not synthesized instruments. But I still can't figure out how to load and play those sounds.

Block Party has simpler code, which I've been able to figure out how to use. It attempts to open a socket to a csound server, then sends instructions to the server to play a sample file:

   self.cssock.connect(('127.0.0.1', 6783))
   ...
   msg = "perf.InputMessage('i 108 0 3 \"%s\" %d 0.7 0.5 0')\n" % (os.path.abspath(filename), self.csid)
   self.cssock.send(msg)

However, Block Party's sound doesn't work - neither on my G1G1 physical XO, nor on a VM image I downloaded. It always says the server failed to respond. Do I need to install it or turn it on? If the csound server is not on by default, it's not an ideal means for playing sounds.

I don't need to do synthesis, just to play samples. Should I use something else entirely, like pygame? Thanks for any pointers...