This is my quick and dirty summary of what you need to do to take an old (Boodler 1.x) soundscape -- as Python code -- and update it to work with Boodler 2.0. This is not a substitute for reading the new Designing Soundscapes tutorial.
Create a directory. Put in a Metadata file which includes the name of your package (boodler.package: ...) and a boodler.main: main line.
Copy in your Python file, and rename it main.py (to match the boodler.main: line in Metadata.)
Delete all the name="..." lines in your Agent classes. Put that information in the Resources file, as dc.title: ...
Add these lines:
from boopak.package import *
from boodle import agent, builtin
Make sure your Agent classes are defined as
class MyAgentName(agent.Agent):
class MyAgentName(agent.Agent): format, add an import line of the form from boodle.agent import Agent.
Call bimport() for each package you want to import.
All sound sample files live in packages now, so you'll have to import them this way.
Sounds that used to be in the Boodler sound library are now mostly in org.boodler.old... packages. For example, you might do this:
water = bimport('org.boodler.old.water')
Instead of referring to a sound as a string, refer directly to the object in the imported package. For example:
# replace this:
self.sched_note('environ/rain-heavy.aiff')
# with this:
self.sched_note(water.rain_heavy)
.aiff suffix, and dashes have generally turned into underscores. Examine the package contents to see the exact names of the sound files.
Built-in agents like FadeOutAgent, FadeInOutAgent, StopAgent are now in the builtin module. You will have to say, for example:
self.sched_agent(builtin.StopAgent())
Change all __init__() functions in your agent classes to init(). Remove this line wherever it appears:
# no longer needed:
Agent.__init__(self)
Make sure the arguments to init() are the right types. Don't use an integer for a default value if you want the user to be able specify a float. For list arguments, you should declare an _args field to specify the list type.
Remove the float(...), int(...), etc casts from your init() method. Those conversations now occur automatically.
Test your code with boodler.py --external your-directory.
When it works, create a package file with boodle-mgr.py --import create your-directory.
Don't forget to install the package in your own collection: boodle-mgr.py install your-package.boop