PDA

View Full Version : Numerology 2 Beta 30


jim
11-17-2008, 10:56 PM
This is another big one: New DrumKit module, module import and export, many fixes and tweaks, and (once again), some AU hosting changes. With this release, I am winding down any new features, and will be focusing on bug fixes, doc updates, and important tweaks -- all in preparation for the final release.

The download is here:
http://www.five12.com/Numerology2-Beta30.dmg

I've appended the release notes in two posts on this thread.

You're welcome to post general comments here, but please post bug reports over on the "Numerology : Bug Report" thread. I'll be posting more details on bug reporting shortly....

Cheers,
Jim

jim
11-17-2008, 10:57 PM
Numerology 2 Beta 30 Release Notes:

New Module: Drum Kit

It's basically 8 "Audio Sample" players in one module, with definable note ranges, adjustable velocity sensitivity, a pair of choke options (parts 4-3 and 8-7), per-part panning, and individual outputs.

The default note range of each part corresponds to the following Standard MIDI drum kit sounds:
Bass Drum 1, Electric Snare, Low Tom, Hi-Mid Tom, Close HH, Open HH, Crash Cymbal, Cowbell
The default note ranges for the DrumSeq have been adjusted to match.

This is a deceptively simple module, so there are some important details I would like to point out:

- Each module has a full AHDSR amplitude envelope, and a loop x-fade control, so you're not limited to just percussive sounds.

- You can set the note range to be anything you like, so you can do tuned percusson FX sounds, or note-based multisamples quite easily. Tuning of samples is adjusted so that the low-note is always at the 'nominal' tuning for the sample.

- The tuning range is wide: +/- 60 semitones. I'm even thinking of expanding that range...

- Each part has a 'mute' button (adjacent to the volume control). It mutes the part from the Main Out, but not the individual outputs, making it easy to setup per-part processing easily. Remember that all you have to do to mix such parts back in, is to connect the audio output for it (or it's custom processing chain), into the audio output of the stack (or anywhere else).

- And of course, it's a Numerology module so:

- you can tweak the kit settings for each stack preset if you like
(or use the module menu "Copy Params To All Presets" to do otherwise,
or put the DrumKit module in a stack separate from your DrumSeq's)

- You can modulate the crap out of any param easily.

- You can use as many DrumKit modules as you like.

Limitations:
- Each part currently only has 2 voices.
- Sample loading happens on the audio render thread -- this is a HUGE NO NO, but really not any worse than what other drum samplers do when they load samples. The workaround is easy: don't load samples while the transport is running if you don't want any undue glitching.

Audio Sample:
- tweaked the note-stealing process to be less 'clicky'
- now has an adjustable cross-fade parameter
- now has adjustable velocity sensitivity
- now has a pan control
- re-calibrated volume control
- tuning is now in +/- some number of semitones

Loop Settings : Drum Kit & Audio Sampler

Along with the cross fade, I've instituted some new constraints on the looping paramters:
- The sample start point must always be less than or equal to the loop start point.
- The loop start point must always be less than or equal to the loop end point.

These rules are there so that cross-fade algorithm has a known set of conditions to deal with. As I get more time to work on the sample-playback algorithm, I may relex them.

Sample Management:

Now, when you save a project that includes an AudioSample or DrumKit module, you will be asked if you would like to copy the samples into the media folder for that project. If you chose to do so, they will be copied into a folder called "AudioSamples" within the media folder.

Module Export

In the module menu for each module (on the left-side of the module header), there is now an option to export the module. This will create a file with the extension ".nmod", and an accompanying media folder (if appropriate). If the module is an AudioSample or DrumKit, all samples will be copied in automatically. You will also have the option of making a .zip archive of the result. That .zip file is what you should use to share modules.

Exported modules include only the settings for the preset that is current when they are exported -- this is to avoid odd behavior when importing a module into a stack that already has several presets. If you want to share a module that has multiple presets, see the instructions in the "File Exchange : Stacks" forum at five12.net.

Module Import

This item is in the Stack menu, and allows you to import .nmod files into the current stack.

<continued in next post>

jim
11-17-2008, 10:57 PM
Audio Units

Once again, the spectre of VST-originated behavior within some AudioUnits has made its unwelcome appearance. In this case it means that Numerology can only safely load AU Presets for an AudioUnit on the main UI thread. I have implemented this behavior with the new build, which should improve AU reliability significantly, but it has two important ramifications: Numerology can no longer change AU presets when Numerology Stack presets change (as there are unresolvable timing issues), and Numerology can no longer load AU presets when in ReWire mode.

Here is the example that forces me into this decision:

- Numerology loads a project with an AU that plays back samples.
- While opening the project (which happens on a background thread), Numerology loads the preset data for that AU and sets it.
- The AU reads the preset data, and tries loading sample files referenced by it, but can't find them. So it decides to open a dialog to warn the user. This may seem like a reasonable thing to do, except that when you try to pop up a dialog from a non-UI thread, you invariably lock up the app altogether. This is why the dudes on the CoreAudio team say not to run UI code on certain AU api calls, but many AU developers do it anyway.

What should probably happen is that the AU should return an error code when the host tries to set the AU preset data, then also report the error to the user, when the user opens the UI for that AudioUnit.

In addition to setting the AU preset when a session loads, Numerology (before now) could also change the AU preset when changing stack presets, and did so in a sample-accurate manner. For some 'large' AudioUnits, this was of limited usefulness (as it could cause glitches), but for the 'smaller' ones (i.e. anything from Apple, and many others), it allowed us the luxury of being able to tweak AU parameters for each of the presets in a stack (just like you can for Numerology's 'native' modules). I may restore this behavior later on, for AU's that can handle it, but it is off for now.

The new behavior is as follows:
- When you load a preset for an AU module, that preset stays constant (static) for all your stack presets.
- When you save a project, Numerology will save the current stat of all AUs as AU Presets with the project. (as before)
- When you load a project, Numerology will restore the state of all AUs from AU Preset data stored with the project. (also as before).

If you need to simulate the prior behavior, there are a couple of options:

- If the AU is small, or the number of params you need to tweak are manageable, then you can use the FaderBox and ParamMod modules to build a custom control surface. I've done this with GuitarRig and AugustusLoop and it works very well.

- With some AU's, you may be able to use MIDI program change messages.

- As the on/off switch for each module is always 'stack preset aware', you can actually add multiple copies of an AU and switch them on and off with stack presets. Modules that are 'off' are not rendered, so there is no CPU load issue.


ReWire

- AU hosting has been disabled in ReWire mode for now -- due to reasons discussed above, Numerology can only reliably change presets for AU's in the UI, which is not possible in ReWire mode. Well, without preset support, the only way to control AU's in ReWire mode is to use ParamMod, which is only practical for a very few AU's. Of course, you should just host them in the ReWire host app.

- Recording now works in ReWire mode -- not that there's any real reason to use it, but it does work.


Patchbay Setup

You can now set custom names for each pair of audio inputs and outputs, as well as enable & disable I/O in stereo pairs. Settings are saved per-device, so you can have custom settings for each device. The deviced used is the currently active one, so if you go into Preferences and change the audio device, you'll have to restart Numerology before you can edit the PatchbaySetup for that device.

The default audio I/O setup (which what you'll all get when you startup), only the first pair of inputs and outpus are enabled, so if you use lots of I/O, you will need to manually enable them. The first pair of audio outputs are always enabled.


Memory Management
I've rewritten some of Numerology's internal memory management code, and fixed several crashes and other conditions that could cause crashes, including one that could happen when starting up, and another that tended to happen when opening files.

Volume:
- I've re-calibrated all volume faders to more closely match the response of traditional mixer faders. If you have been using ParamMod on GroupOut volume, you will need to update the ParamId settings as follows:
- set the target param to something other than AudioVolume
- set the target param back to AudioVolume

Patchbay Setup:
- The location for this file, which holds preferences for Numerologys internal busses, is now located in:

<your home dir>/Library/Application Support/Five12/Numerology

The new code will check for an existing old p-bay setup file in the old location (/Library/Application Support/Five12/Numerology) and copy it's settings to the new location.

Misc Fixes and Updates:

- fixed a 'buzz' sound that could happen when deleting AU Synths.

- fixed a stuck note problem that could happen with external sync.

- The level knob in the LFO module works again.

- Fixed a suble display bug affecting the Routing page for modules.

- Stopped the "Rec" indicator in the transport from 'floating around' when resizing the project window.

- Added "Run Mode", "Loop", and "Auto Reset" menus to the ModulationSeq module. (in the advanced settings panel)

- DualLFO: randomness of S&H waveforms much improved

- Fixed a display bug in ParamMod related to the display of some parameters, including "StartStep" and "EndStep"

- Sequencers: Fixed several bugs that would occur when the start step is greater than the end step.