Skip to main content Skip to docs navigation

Find something? Try page search e.g. with Cmd+F/Ctrl+F.

V22.10.0 Intro; Files; Players Mix Editing Settings, , ; Engines; PDF

Intro


Files


Players





Settings, ,


Engines


Other


PDF

Overview

Wotja icon

Wotja is a powerful Generative Music System. Easily generate live ambient music, MIDI + more. Or just relax with awesome 1-tap 'flows'. Includes 100s of editable templates and supports use of add-on Paks. This User Guide also includes sections on the Wotja 22 WME / WAE / WSE engines. With it and our Tutorials and FAQs you have all you need to begin your creative journey with Wotja.

Broken links or suggested improvements? Please do let us know!

It is way easier to use Wotja than it is to describe how it works - and you can get going in seconds.

A good analogue is to consider how easy it is to drive a car vs having to know in great detail how every bit of a car works - before you can drive it!

The 'magic' in Wotja largely results from how we use 'chance' and randomization in/with its powerful engines (music, audio & script) and 100s of included editable templates - and you can create/use your own, too.

That magic is a consequence of 30+ years of continuous improvement & extension (meaning our craft, passion and blood, sweat & tears!).

How does Wotja work?

See also: Music Mode Schematic.

  • At the core of the Wotja Generative Music System are user-editable Wotja Templates ("Templates"; filetype: .noatikl) and Wotja Mix Files ("Mix Files"; filetype: .wotja).
  • Each Wotja Template comprises:
  • Mix Files include Cells which are arranged in grid of 4 columns and 12 Tracks (i.e. 48 Cells in total).
  • Each Cell can have a Template added to or merged into it, OR have links to a WAV or MIDI file in a Pak.
  • The MIDI notes/events from each Generator can be turned into sound either with a WAE Synth & FX Network (use of the WAE is optional, and it can be turned off), via 3rd Party Hosted Plug-ins or sent to a 3rd Party DAW/Synth for use by that.

Notes:

  • WAE FX can also be applied directly as Generator FX, Cell FX, Track FX or even as Mix FX.
  • In any Track only one Cell can play at a time.
  • When a Mix File is saved ALL Template settings/edits are saved to the Mix file.

Quick start

The best way to start getting a feel for Wotja it simply to play something, e.g. a "Flow" or a Wotja file.

Tip: We have many quick tutorials (and short videos) to help you get going - most are just a few seconds long.

Tutorials

If you don't want to watch the 'Play a Flow' tutorial (it's just 13 seconds!), then do this:

  1. Load Wotja.
  2. In the Documents screen, tap the BFlows Screen tab.
  3. Tap any one of the 10Included Flows.
  4. Wotja will start generating music for you in the Flow Player!

Guide Schematics

This User Guide provides schematics for each key screen, making it easy to get to grips with Wotja. Each schematic is surrounded by color-coded buttons.

Tap a button around the outside of a schematic for further info on that UI element. Tap it again (or use your browser back button) to return to the schematic.

In a desktop browser hover over the button for a pop-up description of the item; on an iOS device tap/hold the button for a quick preview. Easy!

Color-coded buttons and examples from the Music Mode Schematic :

# : Panel area e.g. Menu Bar A

# : Button/selector e.g. Cell Selector 17

# : Display item e.g. MIDI Channel 32

# : WME (Generators) e.g. Generator Button 30

# : WAE (Sounds, FX) e.g. Gen erator FX 34

File Types

Tip: How do I get files into Wotja? See this FAQ.

Glossary

  • Album (Box): A Wotja Album (AKA Box) (File Type .wotjabox ) includes a number of Wotja Mix files and is packaged as a zip file. Albums can be exported to the Clipboard as a WJURL (Wotja URL). See: File Types and Album/Playlist Player.
  • Audio Unit (AU): An Audio Unit (AU) [Apple link] / Audio Unit Extension / Audio Unit Plug-in (the latest iteration of which is Version 3) is most easily thought of as a self-contained program that can run in an Audio Unit Host. It is a proprietary plug-in architecture that is used by Apple, and so is different to Steinberg's VST format/architecture. See: Plug-in Hosting and Wikipedia Audio Units.
  • Audio-rate unit: A WAE Unit (e.g. TG Wavetable or Reverb FX) that generates audio at your device's Audio Output rate (e.g. 48 kHz). See: WAE Units and Synth & FX Editor.
  • Control-rate unit: A WAE Unit (e.g. LFO unit or Envelope) that operates at a low frequency, most typically between 0 - 50 Hz. See: WAE Units and Synth & FX Editor.
  • Cell: At the heart of a Wotja Mix, a Cell can include one of A) a generative Template (unmodified, modified or even several merged into it); B) an Audio loop; or C) a MIDI file. See: Cells.
  • Cut-up Text: Text selected at random from a "word pool", a technique that is particularly helpful for coming up with fresh ideas. The wordpool can include text from Mix Text Mode Sources and Libraries (User, General and Wotja). Cut-up text is very useful when used as a source for Text to Music (TTM) as generation can be set to occur at certain intervals. See: Text Mode , Text Properties and Generator - Text to Music.
  • Flow: A succession of mixes that are auto-generated in the Flow Player using settings in the selected Randomization Preset (RP). See: Flow Player and Randomization Preset (RP).
  • Generator: One of 6 different MIDI note/MIDI controller event generator "types" in the WME:
    • Rhythmic: The original Generator and used for generating MIDI notes with durations only as available in the Generator's specified Rhythm Rule (which also specifies probability weightings). Several of the parameter settings for this generator type are common to other generators. Typical use: Melodies. See: Generator - Rhythmic.
    • Ambient: Used for generating MIDI notes with durations/ranges specified via parameters (i.e. not the Rhythm Rule). Typical use: long MIDI notes (Drones, pedals); short random duration MIDI notes (e.g. effects like raindrops). See: Generator - Ambient.
    • Sequence: Used for generating note sequences. Does not generate notes itself, but uses one of its supported sub-types to do that. It is easiest to think of it as a list which supports a number of list items where each list item includes all the parameter values needed for the generator sub-type to create note sequences. See: Generator - Sequence.
      • Euclidian: A Sequence Generator sub-type, it composes note sequences from 3 main Euclidian parameters - Steps, Fill and Rotation. Typical use: Easy and FAST creation of melodies requiring no musical knowledge; for beat generation. See: Sequence - Euclidian.
      • Text to Music: A Sequence Generator sub-type, it composes note sequences from manually entered or auto-generated text and the Generator's Scale Rule. Typical use: Easy and FAST creation of melodies requiring no musical knowledge. See: Sequence - Text to Music.
      • Pattern: A Sequence Generator sub-type, it composes note sequences just like a Rhythmic Generator unless it is being used to play note patterns (there are 3 different kinds: B, R, F). Typical use: Providing a melodic structure (muted or not) for other Generators to compose around and/or to be followed (Follower); for playing predefined melodies (and sequences) See: Sequence - Pattern.
    • Follower: Used for generating MIDI notes that follow those created by another Generator (of any type). You can select note delay options and a composition "strategy" of Chordal Harmony, Interval Within Scale Rule or Semitone Shift (but to be generated a note still must be permitted by the Generator's Rule). Typical use: Creating (delayed) harmonies on composed notes; generating notes for Listener Generators. See: Generator - Follower.
    • Repeater: Composes just like a Rhythmic Generator but can repeat bars of MIDI notes that it has generated earlier. Typical use: Occasionally repeating previously composed bars of notes. See: Generator - Repeater.
    • Listener: Listens out for incoming MIDI notes and, when detected, these can be played by a Follower Generator or used for Scripting with the WSE. Typical use: Hyper Instrument / Adaptive Music where external MIDI input can be used to influence/direct composition (albeit with some latency as the WME composes a little in advance). See: Generator - Listener.
  • Generator Network: The particular combination of Generators in a Cell. See: Generator Network View.
  • Mix: A Wotja mix (File Type .wotja ) that includes all the settings Wotja needs to play it. Mixes can be exported to the Clipboard as a WJURL (Wotja URL). See: File Types and Mix Player.
  • Playlist: A Wotja Playlist (File Type .wotjalist ) references Wotja Mix files that exist in your Wotja Folder (it does not include them like an Album does). See: File Types and Album/Playlist Player.
  • Plug-in or Plugin: See: Audio Unit (AUv3) above or VST below.
  • Randomization Preset (RP) [formerly referred to as Randomization Scheme (RS)]: A collection of parameter settings that can be used to create an automatic mix, flow or when a mix is manually randomized. See: Randomization Preset (RP) and manual randomization.
  • Rule: One of 4 different Rules in the WME where each rule specifies a number of discrete values (scale elements, note durations) and probability weighings that govern how likely any element is to be selected by a Generator. The Scale, Harmony and Next Note rules are are inter-dependent meaning that a particular note can be selected for composition ONLY if it is available in all of them AND it is possible with the Generator's Pitch/Range parameter settings:
    • Scale: The Generator Rule that specifies the available scale elements (pitches) that can be used for composition, starting at the Mix Root. If an element is not available it will not be used. Example: If the Mix Root was C then scale element 0 would be a note of pitch C, 1 would be C# (minor Second, 2 would be C (major Second) etc. See: Scale Rule.
    • Harmony: The Generator Rule that specifies what harmony intervals are permitted when it composes notes (in a Cell or even the Mix). If an interval is not available it will not be used. Example: If there is a note already playing (and so needs to be considered for harmonization) then a Rule element of 0 would represent a note of the same pitch, 1 a minor Second above that pitch, 2 a major Second above that pitch etc. See: Harmony Rule.
    • Next Note: The Generator Rule that specifies how far away from its last composed note (in terms of intervals, + or -) the next note needs to be. If an interval is not available it will not be used. Example: If there is a note already playing then a Rule element of 0 would represent a note of the same pitch, 1 a minor Second above or below that pitch, 2 a major Second above or below that pitch etc. See: Next Note Rule.
    • Rhythm: The Generator Rule that specifies what note durations can be selected when a note is generated. If an interval is not available it will not be used. Example: A Rule element of 1 is a whole note (240 Wotja units), 1/2. a dotted half note 180 (240 Wotja units), 1/2 a half note (120 Wotja units) etc. See: Rhythm Rule.
  • Synth & FX Network: A particular configuration of WAE units created in the Synth & FX Editor. See: Synth & FX Editor.
  • Template: To create generative music a Cell requires in it a Template (File Type .noatikl ). Templates must contain at least one Generator and can also include Synth & FX networks (Generator FX and/or Cell FX). Wotja includes many hundreds of editable Templates and you can also export your own from a Cell (Pro Feature Set). See: Templates.
  • Tone Generator: An audio-rate unit in the WAE. These generate sounds from MIDI events composed by the Generators, and are available only behind the Synth button in the Generator Network Editor. See: Generator Network View.
  • Track: A group (line) of 4 Cells. Use the Grid Button to see all Cells in a Track. Tracks can be muted/soloed and have a Track Cell Sequencing button. This allows the Cells in the track to be sequenced (played one after the other), triggered or looped. Tracks can also have their own WAE Network. See: Grid Button , Track Cell Sequencing and Track FX.
  • TTM (Text to Music): The technique of generating melodies from manually entered or auto-generated text and a Generator's Scale Rule. See: Generator - Text to Music.
  • VST3: An VST3 Plug-in is most easily thought of as a self-contained program that can run in an VST3 Host. VST3 is Steinberg's latest Plug-in format and is different to Apple's Audio Unit format. See: Plug-in Hosting and Wikipedia Steinberg VST.
  • Wotja Folder: This is where Wotja finds and saves files. See: Wotja Folder.
  • WJURL: A WJURL (Wotja URL) is a Wotja Mix or Album exported as a long text string in the form of a URL. It can be embedded in a web page, shared in a message or saved as a .wotja file. See: File Types and Sharing.
  • WAE: The optional WAE (Wotja Audio Engine) is what Wotja uses for audio/sound generation (it can be turned off in Settings > Audio MIDI+ > WAE for Sounds & FX). It comprises a number of audio-rate tone generators (synths), FX units, control-rate units and connectors and junctions (to hook up more complex configurations). Complex networks of these units can be created in the Synth & FX Editor. See: WAE , Setting WAE for Sounds & FX and Synth & FX Editor.
  • WME: The WME (Wotja Music Engine) is what Wotja uses for MIDI note and MIDI controller event generation . It utilizes a range of chance / aleatoric / stochastic / algorithmic music techniques and features 6 generator "types", each with related parameter settings. Those settings are what determine the notes that it composes/generates. See: WME.

Documents

Menu Bar Menu Bar Flows Mixes Albums Action Button Sleep Timer Button Screen Selector Screen Title Feature Set (FS) Store Button Settings Button Flows Show Button User Flow Button Included Flow Button Flow Name Mixes Show Button Add New Mix Button Mix Button Mix Name Button Albums Show Button Add New Album Button User Album Button Album/Playlist Name Locked File Badge Playlist Badge File Tab Included Album Badge Template Badge Albums Sort Button Mixes Sort Button

(tap circle for info, hover for tooltip; tap image for large)

Documents Screen
  • The screen you see after you have launched the app.
  • It is where you open/delete/rename files, and also create files with the Add New buttons.
  • It comprises three different file views or screens: FlowsB, MixesC or AlbumsD.
  • The 5Feature Set (FS) button in the Menu Bar shows the active Feature Set.
  • Desktop versions: These allow multiple files (Mixes, Playlists and User Albums) to be open at the same time. Each file is shown in a different tab at the top of the screen. The User Guide schematics use Desktop screenshots and so show this. See also Desktop Menu.
  • iOS/macOS versions: When you first start the app you're prompted if you want to use iCloud or Local. See iCloud Settings.
Tutorials

AMenu Bar

UI Elements: Menu Bar buttons12567 and a Screen title4 that is always "Wotja".

BFlows Screen

The "Flows" screen is selected with the Screen Selector3.

It shows a number of buttons where each button represents an underlying Randomization Preset ("RP").

The buttons shown depends on the filter settings selected in the Flows Show8 menu.

CMixes Screen

The Mixes screen is one of the Create screens and is selected with the Screen Selector3.

Note: For a mix file or template to be shown it must be in the (relevant) Wotja folder.

The Create screens (Mixes and User Albums) are selected with the Screen Selector3.

DAlbums Screen

The Albums screen is selected with the Screen Selector3.

This screen display buttons for all User Album and Playlist files (.wotjabox, .wotjalist, see Filetypes) that are in your Wotja folder as well as buttons for Included Albums and Subscriber Albums (these last type are only shown in the free versions for iOS/macOS).

To easily identify them, Playlist files, Included Albums and Subscriber Albums have a small badge overlay in the bottom right corner of the button.

Note: For an album or playlist to be shown it must be in the (relevant) Wotja folder and you have not deselected that type in the "Show" filter.

1Action Button

The Action button presents a pop-up menu with the following options:

2/ Sleep Timer Button

Tutorial: Set a Sleep Timer.

  • (Off) [Default]:
    • Sleep Timer is inactive.
  • (On):
    • Sleep Timer is active

Tip: When the Sleep Timer value is changed Wotja will auto-restart whatever is playing.

3Screen Selector

Tap a "segment control" to select the screen you want, these being the Create MixesC and User AlbumsD screens or the Play FlowsF (with two sub-screens) and Included AlbumsG screens.

4Screen Title

The Screen title in Documents is always Wotja.

5Feature Set (FS) indicator

The Feature Set (FS) indicator is actually part of the Store button6. That means it can also be tapped on.

It is only shown only in the free variants of Wotja and then only when Wotja is in 'Lite' or 'Lite+' mode the Feature Set (FS) where it displays the name of the active Feature Set, i.e. 'Lite' or 'Lite+'.

Note: The Feature Set (FS) indicator does not display at all when Wotja is in 'Pro' mode.

6Store Button

A Store button is shown in the Documents, Settings, Flow Player, Album Player and all 5 Mix Editing screens (Music, Text, Display, Plug-ins and Recording).

When tapped on, the Store button takes you to the In-App Store (or to a Store info page in the Plug-in).

In the free variants of Wotja, 'Lite+' mode is unlocked just by visiting the In-App Store!

Note: In the free variants of Wotja the Store button also displays the Feature Set (FS) indicator5 when it is in 'Lite' or 'Lite+' mode.

7Settings Button

The Settings button takes you to the Settings screen.

8Flows Show Button

Displays a pop-up menu with filter options that govern what Flow buttons are shown.

The button text indicates the selected items, where each one is represented by a number e.g. "Show..." if nothing set, "Show: 1, 2, 3" etc.

Select any of the following:

  1. User
    • Select (tick) to display Flows (Randomization Presets [RP]) that you have saved to or otherwise added to the Wotja folder.
    • Note: These are shown as locked (meaning they cannot be used) unless Wotja is in 'Pro' mode.
  2. Built-in: Higher CPU impact
    • Select (tick) to display built-in Flows (Randomization Presets [RP]) for devices with faster processors. These have been created to generate mixes that have a richer sound. If you can play these without issue/breakup/glitching then these are the ones you will probably want to play!
  3. Built-in: Lower CPU impact (CPU-)
    • Select (tick) to display built-in Flows (Randomization Presets [RP]) for devices with slower processors. The sound is still great, but just not quite as rich as that using those above. You should use these if you are having issues/breakup/glitching using the ones above.
    • Note: These Flows display with 'CPU-' appended to the Flow name.
9User Flow Button

This icon is used by any non-included Randomization Preset ("RP") that you have saved or otherwise added to your Wotja folder.

Tap it to start the 'Flow Player'.

10Included Flow Button

Wotja includes a number of "Flows". Tap the button to start that Flow playing in the 'Flow Player'.

Flows are actually a succession of mixes auto-generated by a Randomization Preset ("RP"), the name of which is shown below the button (e.g. Flow "Mixed 1" is generated by a RP called "Mixed 1.wotjarp").

See: Flow Name11.

Tip: In Pro Mode you can edit the parameters of an included RP and then save your changes as a new RP. It will appear as a User Flow button9).

11Flow Name

This shows the name of the Randomization Preset ("RP") that is used by the Flow button above it.

The name of an included (built-in) Randomization Preset is not editable but you can edit the name of your own saved Randomization Preset as follows:

  • In Finder/Explorer (Desktop) or Files (Mobile) or equivalent find the relevant .wotjarp file in the Wotja folder and rename to what you want.
  • Alternatively, within Wotja itself (and in Pro Mode), you can go to Settings > Randomization Presets, open your Randomization Preset and then re-save it with a different name.
12Mixes Show Button

Displays a pop-up menu with filter options that govern what Mix buttons are shown.

The button text indicates the selected items, where each one is represented by a number, and the search name if any is also shown if used e.g. "Show..." if nothing set, "Show: 1, 2", "Show: 1; abc" etc.

Select any of the following:

  1. Mix Files
    • Select (tick) to display Wotja mix files (.wotja, see Filetypes) that you have created or otherwise added to the Wotja folder.
    • Note: This includes mix files in older formats (.skd, .mixtikl and .liptikl, see Filetypes).
  2. Template Files
    • Select (tick) to display Templates (.noatikl, see Filetypes) that you have created or otherwise added to the Wotja folder.
  3. Search: ('Pro' mode)
    • Allows you to enter a search term to search for a file by name or part name.
    • The value you enter here applies only to Mixes.
    • The value is discarded if you restart the app.
13Add New Mix Button

Tap the button for the pop-up "Add New Mix" menu:

14Mix File Button

See also: Add New Mix.

Tap the button to open the mix in the Mix Player (it should open in the last used "Edit Mode").

The appearance of a mix file (.wotja, see Filetypes) button depends on a number of factors:

  1. Randomization Preset
    • When a mix is created, the mix button can display Cut-up, TTM or no text and with a background of black/white, or solid color or thumbnail of the screensaver, all depending on the settings in the Randomization Preset that is used.
  2. Cells
    • Is content in one or multiple cells (this is important?
  3. Filetype
    • Is it an old format Wotja file, Mixtikl file or Template file (.noatikl, see Filetypes)?
  4. Manually changed
    • If you have added a background image to your mix it will show in the thumbnail (see: Display Mode > Picture button5).
    • If you have created an Empty Mix or Cut-up Mix then the button will have a white background until you select your preferred Display settings (see: Display Mode > Properties4).
15Mix Name Button

Tap on this text button (below the Mix File button14) for the following popup menu:

  • Open
    • Open the file.
  • Delete
    • Delete the file.
  • Rename
    • Rename the file.
  • Duplicate (Pro only)
    • Duplicate the file.
  • Cancel
    • Exit the pop-up menu.
16Albums Show Button

Displays a pop-up menu with filter options that govern what Album buttons are shown.

The button text indicates the selected items, where each one is represented by a number, and the search name if any is also shown if used e.g. "Show..." if nothing set, "Show: 1, 2, 3, 4", "Show: 1; abc" etc.

Select any of the following:

  1. Boxes
    • Select (tick) to display 'box' Albums (.wotjabox, see Filetypes) that you have created or otherwise added to the Wotja folder.
  2. Playlists
    • Select (tick) to display Playlists (.wotjalist, see Filetypes) that you have created or otherwise added to the Wotja folder.
  3. Built-In
    • Select (tick) to display the built-in Albums, currently 'Calm' and 'Relax'.
  4. Search: (Pro only)
    • Allows you to enter a search term to search for a file by name or part name.
    • The value you enter here applies only to Albums.
    • The value is discarded if you restart the app.
17Add New Album Button

Tutorials: Create an Album | Create a Playlist

Tap the button for the following "Add New Album" pop-up menu:

18User Album Button

See also: How to create an Album file (.wotjabox).

Tap the button to load the Album in the Album/Playlist Player.

If the Album includes a background image then you will see that image on the Album button.

19Album/ Playlist Name

The name of an Album (.wotjabox, see Filetypes) or Playlist (.wotjalist, see Filetypes).

Tap on the button for the following popup menu:

  • Open
    • Open the file.
  • Delete
    • Delete the file.
  • Rename
    • Rename the file.
  • Duplicate (Pro only)
    • Duplicate the file.
  • Cancel
    • Exit the pop-up menu.
20Locked File Badge

The locked file badge is shown to the bottom right of a file and only displays in 'Lite' or 'Lite+' mode. It can be shown in the Flows, Mixes and Albums screens.

It is a simple visual indicator that shows you files that you are not permitted to open in either of the above modes (as relevant).

See the Feature Set Table.

21Playlist Badge

Tutorial: How to create an Playlist file

This badge is shown to the bottom right of a Playlist file (.wotjalist, see Filetypes). Tap the button to load the playlist in the Album/Playlist Player.

The thumbnail used by the Playlist is that of the first mix in it.

24File Tab

File tabs are only shown in the Desktop versions which allow multiple Wotja Mixes, Playlists and User Albums to be open at the same time.

23Included Album Button

This badge is shown to the bottom right of an Included Album (.wotjabox, see Filetypes). Tap the button to load the album in the Album/Playlist Player.

Note: Included Albums cannot be renamed, deleted or duplicated.

24Template Badge

Tutorial: Export a Template

This badge is shown to the bottom right of a Template file (.noatikl, see Filetypes). Tap the button for a Template File to auto-convert it to a .wotja mix file before being opened in the Mix Player.

25Albums Sort Button

Displays a pop-up menu that lets you select Albums sort order.

The button text shows the selected sort order e.g. "Sort..." buttons, e.g. "Sort: A-Z".

Select one from the following:

  • Sort: New-Old
  • Sort: Old-New (Pro only)
  • Sort: A-Z (Pro only)
  • Sort: Z-A (Pro only)
26Mixes Sort Button

Displays a pop-up menu that lets you select Mixes sort order.

The button text shows the selected sort order e.g. "Sort..." buttons, e.g. "Sort: A-Z".

Select one from the following:

  • Sort: New-Old
  • Sort: Old-New (Pro only)
  • Sort: A-Z (Pro only)
  • Sort: Z-A (Pro only)

Templates

Menu Bar Back Button Paks List Pak Toggle Screen Title Templates List Action Button Load/Replace Button Merge Button Documents "Pak" Generator Types Pak Selected Pak Pak Selector 3rd Party Pak Template Toggle Template Selector Preview Indicator

(tap circle for info, hover for tooltip; tap image for large)

Templates
  • Wotja includes 100s of editable "Templates" (see What is a Template?).
  • Templates are at the core of Wotja because every Mix file is comprised of 17Cells and for any Cell to play it must have in it either:
    • a Template, be that in an included one or one one you or a 3rd party has created.
    • an Audio or MIDI file (both must be in Paks, see Filetypes).
  • Mix files can be auto-created e.g. in the Flow Player, or created by you, which is why this section comes before the other "Edit Mode" sections.
Tutorials
What is a Template?

In our terminology a Template is basically a self contained "generative music and sound preset". This simply means it contains all the parameter settings for the WME (Music Engine), WAE (Sound & FX Engine) and anything else Wotja needs to generate music. It can include just a single Generator (these generate MIDI notes) to very complex complex network of Generators, each with their own WAE Sound & FX networks (used to generate sound and FX).

Once a Template is added to a 17Cell you can edit/customize any of its settings, but you do not have to - they sound great as they are! There are hundreds of editable Templates included in Wotja that you modify and save to use as your own (see 9Documents "Pak" (Wotja Folder)).

How are Templates used?

Automatic Mixing:

Manual Mixing:


AMenu Bar

The Menu Bar contains the 1Back, 6Actions, 7Replace and 8Merge buttons.

1Back Button

Takes you back to the screen you came from.

2Paks List

Displays a list of installed Paks that you can select a Template (or other supported FileType) from.

3Pak Toggle

Note: The Pak toggle is only shown when you are accessing the Template List via Settings > Randomization > Templates.

For the purposes of randomization the Pak toggle allows you to specify which Paks you want Templates to be selected from for the current Randomization Preset.

4Screen Title

Displays the name of the screen.

5Templates List

The list of Templates (or other supported FileType) in the selected Pak.

6Action Button

The Action button displays a pop-up menu a number of useful options to help with Template and Pak selection (those marked with * are only shown in Randomization Presets > Templates > Select Template):

  • Sort: Value
    • New-Old
    • Old-New (available only in 'Pro' mode)
    • A-Z (available only in 'Pro' mode)
    • Z-A (available only in 'Pro' mode)
  • Select All Paks *
  • Deselect All Paks *
  • Select All Templates in Pak *
  • Deselect All Templates in Pak *
  • Select All Paks and All Templates *
  • Deselect All Paks and All Templates *
  • Older Paks: Hidden > Show / Shown > Hide
  • Help - User Guide
7Load/Replace Button

If the Cell is empty then you will see a Load button which when tapped simply adds the Template to the Cell.

If the Cell is not empty then you see a Replace button that allows you to Replace the content in a Cell with the selected Template.

8Merge Button

The Merge button allows you to merge the selected Template with the generative content that is already in a Cell. An example would be if you had a Cell with say a TTM Generator in it and you wanted to add another TTM Template to that.

Note: You are not allowed to Merge in a Template if there are insufficient free MIDI channels to accommodate the Template.

Note: The Merge button is only shown if accessing the Template List from a non-empty Cell.

9Documents Pak

The Documents "Pak" is always shown at the top for easy access. It is not really a "Pak" at all, but just lists all the generative templates (.noatikl files) that are present in the Wotja Folder, whether you have saved some to there (see 4Grid Button > Export Cell to Template) or have copied/moved into it.

10Generator Types Pak

The WME Generator types Pak includes simple "starter" Templates for each of the 6 Generator types, as well as a couple of examples of them in action. These Templates are for those that want to build a mix from the most basic starting point.

The reason for the extra examples (see below) is because two of them do nothing by themselves (Follower, Listener) and so if you add one of those you will not hear anything. And, although Repeater can work by itself, it is also meant for use with another generator (to repeat it).

Note: The 6 Generator types are also the Templates that are added when you select "Add Generator of Type" from a Generator's pop-up menu.

Here is what is included:

  • Ambient
    • A Generator of Type Ambient (you will hear something).
  • Follower
    • A Generator of Type Follower (it will be silent as it is not following anything).
  • Generator + Follower
    • A Generator Network comprising a Generator of Type Follower set up to follow another Generator (so that you will hear something).
  • Generator + Repeater
    • A Generator Network comprising a Generator of Type Repeater set up to repeat another Generator (so that you will hear something).
  • Listener + Follower
    • A Generator Network comprising a Generator of Type Listener set up to work with a Follower Generator (so that you will hear something if you send MIDI input into Wotja).
  • Listener
    • A Generator of Type Listener (it will be silent as a Follower Generator is required to generate sound).
  • Repeater
    • A Generator of Type Repeater (you will hear something).
  • Rhythmic
    • A Generator of Type Rhythmic (you will hear something).
  • Sequence - Both (B)
  • Sequence - Euclidian (Euc)
    • A Sequence Generator of Type Euclidian (you will hear something).
  • Sequence - Fixed (F)
  • Sequence - Rhythm (R)
  • Sequence - Text to Music (TTM) Custom
    • A Sequence Generator of Type Text to Music, configured to use custom text (you will hear something).
  • Sequence - Text to Music (TTM) Cut-up
    • A Generator of Type Text to Music, configured to use Cut-up Text line (you will hear something).
11Selected Pak

A light blue background on a Pak indicates that it is the selected Pak.

Similarly, a light blue background on a Template indicates that it is the selected Template.

12Pak Selector

Tap a Pak to select it and displays its templates in the right hand Templates list.

See "How are Templates Used?".

These are what some of the Paks are:

  • WME Generator types
    • Simple templates that let you start a cell with just one Generator type.
  • BP22 Drums
    • A collection of (Euclidian) Drum Templates for Wotja 22.
  • BP22 Drums Ambient
    • A collection of Ambient Drum templates for Wotja 22.
  • BP22 Mixed
    • A mixed collection of templates for Wotja 22.
  • BP21 Drones 1
    • A collection of Drone Templates optimized for Wotja 22.
  • TTM 1 Players/TTM 1 Players 2
    • Templates that use Text-to-Music techniques to generate melodies.
  • BP20 Drones 1
    • A collection of Drone Templates optimized for Wotja 20.
  • BP1-4 Paks
    • These include templates optimized for Wotja 19.
  • BP0 Paks
    • These include templates optimized for Wotja 4.
  • Flows Pak
    • A Pak that includes special Templates used in some Flows.
  • BP00 Paks (see Action > Older Paks: Hidden > Show / Shown > Hide)
    • Shown in dark grey, and only if "Older" Paks are selected to be shown in Actions.
    • The Paks that were available for Noatikl 3 and Mixtikl 7.
  • BP000 Paks (see Action > Older Paks: Hidden > Show / Shown > Hide)
    • Shown in dark grey, and only if "Older" Paks are selected to be shown in Actions.
    • These include generative templates that came with Noatikl 1 and Mixtikl 1-5.
  • 3rd Party Paks
133rd Party Pak

3rd Party Paks are shown below at the very bottom of the included Paks list (i.e. below the Flows Pak), e.g. the free Morphing Drum and Bass (MDB) and Audio Loop Collections Paks.

Note: Loading Zips from the file system is a 'Pro' mode feature.

14Template Toggle

For the purposes of randomization the Template toggle allows you to specify which Templates you want to be selected for the current Randomization Preset.

See "How are Templates Used?".

Note: The Template toggle is only shown when you are accessing the Template List via Settings > Randomization > Templates.

15Template Selector

Tap to select or preview a Template; tap again to stop the preview.

16Preview Indicator

A Template can be previewed when a mix is playing.

You can preview it without having to open it and when being previewed it has a light green background.

Tap to select or preview a Template; tap again to stop the preview.

Wotja (Mac) File Window Help
About New Show Window Show Wotja data folder
Open Resize User Guide - Online
Close Desktop Menu - Online
Save Online Tutorials
Recent End User License Agreement - Online
Exit Find out about Wotja 22
Install Wotja VST3 (Win)
How to Install the Wotja VST3 Plug-in (Win)
Show the Wotja VST3 Folder (Win)
About Wotja 22 (Win)

The Desktop versions of Wotja (the App but not the AUv3 Plug-in) allow you to have open multiple mixes/boxes/playlists/albums ('files'). Each file will be shown in a separate tab at the top. If your computer is powerful enough then you play all of the files at the same time!

Being able to have multiple files open can be really handy when you wish to copy between mixes, and it is a key feature advantage the desktop versions have over the mobile versions.

To carry out normal file related activities for the Desktop versions e.g. delete/duplicate/rename files etc. you can use either the 'Documents' screen or Finder / Windows Explorer.

Keyboard shortcuts: The Desktop menu items show the keyboard shortcuts that can be used to select them, e.g. Cmd+W (macOS) or Ctrl+W (Windows) to close a tab.

Tip: To change the Audio Output Device in Wotja 22.3+ see Settings > Audio MIDI+ > Audio Output Device.

Note: If you have the macOS and iOS versions of Wotja and have iCloud, then, instead of using the local Wotja Folder for your Wotja Files (the Wotja Data Folder menu item will show you the location of this) you may instead prefer to use the Wotja iCloud Drive folder (recommended). A key benefit of using the Wotja iCloud Drive folder is that you you will then be able to access your Wotja files on any iOS or macOS device that shares the same iCloud account. See the iCloud FAQ.

WOTJA BACKUPS: Make these by: A) Using iCloud to store your files, or by B) backing up your device with Time Machine or equivalent; or C) emailing yourself a backup copy of each wotja. Using iCloud is the easiest way to manage your files.

  • Various weblinks

Player: Flow

Menu Bar Status Bar Exit Button Sleep Timer Button Repeat Button Next Button Randomization Preset Name Play/Stop Button Full Screen Top Panel Store Button Actions Button Settings Button Mix Time Remaining Flow/Sleep Time Remaining Text Area Background/Screensaver Wotja Watermark

(tap circle for info, hover for tooltip; tap image for large)

Documents > BFlow Screen > 10Included Flow Button or 9User Flow Button.

Tutorial
Flow Player
  • Generates a succession of freshly created auto-mixes from the various settings in the currently selected Flow icon, AKA as a Randomization Preset (RP).
  • The Documents screen lists all the RP included in Wotja as well as any that are in the Wotja Folder i.e. any that you have added or created yourself.
  • Flow mix play time is governed by the Mix Duration value in the RP.
  • Playback will continue until either the Sleep Timer kicks in (if active) or if in the Lite Feature Set the auto-timeout is reached.

AFlow Player Menu Bar

The Menu Bar contains the 1Exit, 2Sleep Timer, 3Repeat, 4Next, 6Play/Stop, 8Store, 9Action and 10Settings buttons.

BFlow Player Status Bar

The Status Bar contains the 12Time/Sleep, 5Randomization Preset and 11Mix Time Remaining status indicators.

1Exit Button

Takes you back to the Documents screen.

2/ Sleep Timer Button

Tutorial: Set a Sleep Timer.

  • (Off) [Default]:
    • Sleep Timer is inactive.
  • (On):
    • Sleep Timer is active

Tip: When the Sleep Timer value is changed Wotja will auto-restart whatever is playing.

3Repeat Button
  • (Off) [Default]:
    • A new Flow mix will be generated/play when the current Flow mix has reached its end.
  • (On):
    • The currently playing Flow mix is restarted when it reaches its end, rather than new one being generated.
    • This is a Pro feature.
4Next Button

Forces another Flow mix to be generated.

5Randomization Preset Name

Displays the name of the Randomization Preset currently in use.

6 / Play/Stop Button

A Play/Stop toggle that will start or stop the Flow mix.

7Full Screen Top Panel

When displayed, this panel can help to see the various Menu buttons at the top of the screen. You can have it auto hide after 2 seconds by toggling off the "Show Full Screen Top Panel" in Settings > General.

8Store Button

When tapped on, the 'Store' button takes you to the In-App Store (or to a Store info page in the Plug-in).

Note: In the free variants of Wotja the Store button also displays the Feature Set (FS) indicator5 when it is in 'Lite' or 'Lite+' mode.

9Action Button

Displays a pop-up menu with the following options:

  • Save Flow to Wotja Mix File (Pro only)
    • Saves the current Flow to a new Mix file (.wotja, see Filetypes).
  • Save Flow to Wotja Album File (Pro only)
    • Saves a new Album file (.wotjabox, see Filetypes) that includes the current Flow Mix file (.wotja, see Filetypes).
  • Full Screen [mobile] / Full Window [desktop]
    • Displays Wotja full screen on your device and the mix (if playing) continues to play. At any time tap the screen to leave full screen display and return to Display mode.
  • Full Screen with Camera Background (iOS/Windows)
    • Tip: Watch the Video tutorial (48 seconds in).
    • Displays your device Camera feed in a Window on top of Wotja (which may restart play on going into this mode).
    • At any time tap the screen to return to Full Screen Display mode.
    • For a composite live generative music and video feed use iOS Control Center / a relevant 3rd party app to screen mirror to a TV.
      • Perfect for use as a big screen audio-visual experience e.g. installations, nature video feeds etc.
  • Full Screen & Restart/Stop (for videos) [mobile] / Full Window & Restart/Stop (for videos) [desktop]
    • Wotja displays full screen on your device and the mix (if playing) is stopped and then restarted after 2 seconds, making it easier to find a start point in a screen video recording. At any time tap the screen to leave full screen display and return to Display mode. Alternatively, use the Record Seconds or Bars setting to have the mix auto-stop when that value is reached and then have Wotja wait 2 seconds before returning to Display mode.
    • macOS Desktop version:
      • The Wotja window title bar is hidden and a content area sized to e.g. 640x480 pixels is positioned top left of the screen below the App title bar. The available content area sizes are the same as those listed in the Titlebar > Window menu.
  • Mini Game - Follow the Line
    Wotja Mini Game - Follow the line
    • Displays a simple, but fiendishly hard, mini game in the Play Screen area.
    • Tap the line and keep following it to build up a score.
    • Score and top score (reset when Flow is exited) is shown below the top panel.
    • Tap the small top left X to close the game.
    • See this YouTube video example: https://youtu.be/fRfurwR4r5c?t=26
  • Mini Game - Bat & Ball
    Wotja Mini Game - Bat and ball
    • Displays a simple mini game in the Play Screen area.
    • Tap/drag on the the screen at the bottom to move the paddle.
    • Tap the small top left X to close the game.
    • See this YouTube video example: https://youtu.be/fRfurwR4r5c
  • Help - User Guide
10Settings Button

Takes you to the Settings screen.

11Mix Time Remaining

Displays the Play Time remaining for the current Flow mix.

Tip: To change how long mix will play for try changing the Duration/Max and Duration Max/Range values in the Randomization Preset that is being used. Doing that lets you override what is in the Randomization Preset. It's fun!

12Flow/Play/Sleep Time Remaining

If you are in 'Lite' / 'Lite+' mode or if you have an active 3Sleep Timer button then this indicator shows the time remaining before Wotja will stop playing.

Otherwise this area just show the word "Flow" to let you know you are in Flow mode.

13Text Area

Whether any text is displayed here depends on the Icon Text value used by the Randomization Preset (Settings > Randomization). The text is present in the underlying mix file and can be Cut-up or TTM text.

Tip: To change what is displayed try changing the 'Icon Text' value in the Randomization Preset that is being used. Doing that lets you override what is in the Randomization Preset. It's fun!

14Background/Screensaver

The background used in Flow Mode depends on the Icon Palette and Icon Graphic values used by the Randomization Preset (Settings > Randomization).

Tip: To change what is displayed try changing the Icon Palette and Icon Graphic values in the Randomization Preset that is being used. Doing that lets you override what is in the Randomization Preset. It's fun!

15Wotja Watermark

This is where the Watermark displays if the Settings > General > Show Watermark toggle is on.

There are different Wotja watermarks for the Wotja 22 and Wotja 22 Pro apps.

Player: Album/Playlist

Menu Bar Toolbar Status Bar Add Button Save/Exit Button Sleep Timer Button Previous Mix Button Next Mix Button Play/Stop Button Playing Mix Name Store Button Action Button Settings Button Sequential/Random Play Button Playlist Name/Sleep Time Remaining Mix Thumbnail Button Selected Mix Indicator Playing Mix Indicator Mix Number/Name Mix Duration/Range Mix Selector Mix Actions Button Mix Time Remaining

(tap circle for info, hover for tooltip; tap image for large)

Documents > DAlbums Screen > 18User Album | 20Playlist | 21Included Album.

Tutorials
Album/Playlist Player
  • Plays the following Wotja files:
    • Wotja Playlist (.wotjalist):
      • Playlists contain references to Wotja mix files (.wotja) saved to your Wotja folder. If you change the file in Wotja, then the Playlist just references that changed file.
    • Wotja 'Box' (.wotjabox):
      • Container files contain up to 20 Wotja mix files (.wotja), making them great for sharing your favorite mix creations.
      • Note: Box files can include any mixes, even mixes that reference 3rd party templates or audio loops. However, to play those mixes correctly the referenced content must be installed in the Wotja Folder.
    • Wotja 'Album':
      • A special kind of built-in play-only Box that does not allow exporting of mixes or Mix Overrides.
  • Also used to:
    • Export user created Boxes from Playlists.
    • Add Wotja mix files (.wotja) to a Box.
    • Re-order the files in a Playlist.
    • Edit Mix Override settings for Playlists and Boxes (these values are saved back to that file).

APlaylist Player Menu Bar

The Menu Bar contains the 1Add, 2Exit/Save, 3Sleep Timer, 4Previous, 5Next, 6Play/Stop, 8Store, 9Action, 10Settings and 11Sequential/Random buttons.

BPlaylist Player Toolbar

The Toolbar contains the 3Add and 11Sequential/Random buttons.

CPlaylist Player Status Bar

The Status Bar contains the 12Playlist Name/Sleep Remaining, 7Playing Mix Name and 20Mix Time Remaining status indicators.

1Add Button

Tap this button for the following pop-up menu:

  • New Random Mix (Box files only)
    • Tap to add a new Random mix to your playlist.
  • Browse Mixes
    • Browse the Wotja folder to add a Mix or Saved Mix to your playlist.
  • Cancel
    • Return to the playlist.
2Exit/Save Button

Note: Saving changes to Albums/Playlists is a Pro mode feature.

Displays the Save Changes Menu pop-up before exiting to the Documents screen. For the menu items see the Music > 1Save/Exit button.

3/ Sleep Timer Button

Tutorial: Set a Sleep Timer.

  • (Off) [Default]:
    • Sleep Timer is inactive.
  • (On):
    • Sleep Timer is active

Tip: When the Sleep Timer value is changed Wotja will auto-restart whatever is playing.

4Previous Mix Button

Takes you to the previous playlist item.

5Next Mix Button

Takes you to the next playlist item.

6 / Play/Stop Button

Tutorials: Play an Album | Play a Playlist

A Play/Stop toggle that will start or stop the mix.

7Playing Mix Name

Displays the name of the playing mix.

8Store Button

When tapped on, the Store button takes you to the In-App Store (or to a Store info page in the Plug-in).

In the free variants of Wotja, 'Lite+' mode is unlocked just by visiting the In-App Store!

Note: In the free variants of Wotja the Store button also displays the Feature Set (FS) indicator5 when it is in 'Lite' or 'Lite+' mode.

9Action Button
  • Full Screen [mobile] / Full Window [desktop]
    • Only shown when in Play screen (see 13Mix Thumbnail button).
    • Wotja displays full screen on your device and the mix (if playing) continues to play. At any time tap the screen to leave full screen display and return to Display mode.
  • Full Screen with Camera Background (iOS/Windows)
    • Tip: See the Video Feed Tutorial (48 seconds in).
    • Displays your device Camera feed in a Window on top of Wotja (which may restart play on going into this mode).
    • At any time tap the screen to return to Full Screen Display mode.
    • For a composite live generative music and video feed use iOS Control Center / a relevant 3rd party app to screen mirror to a TV.
      • Perfect for use as a big screen audio-visual experience e.g. installations, nature video feeds etc.
  • Full Screen & Restart/Stop (for videos) [mobile] / Full Window & Restart/Stop (for videos) [desktop]
    • Only shown when in Play screen (see 13Mix Thumbnail button).
    • Wotja displays full screen on your device and the mix (if playing) is stopped and then restarted after 2 seconds, making it easier to find a start point in a screen video recording. At any time tap the screen to leave full screen display and return to Display mode. Alternatively, use the Record Seconds or Bars setting to have the mix auto-stop when that value is reached and then have Wotja wait 2 seconds before returning to Display mode.
      • macOS Desktop version: The Wotja window title bar is hidden and a content area sized to e.g. 640x480 pixels is positioned top left of the screen below the App title bar. The available content area sizes are the same as those listed in the Titlebar > Window menu.
  • Export to Clipboard as Wotja Album (Pro only)
    • This is for when you want to share the Album as a Wotja URL (.wotjabox, see Filetypes).
  • Save Wotja Album to File (Pro only)
    • Allows you to export your Wotja Album to a file (.wotjabox, see Filetypes) that is then saved locally. You might choose to do this to if you wish to share your Album.
    • Displayed in User Albums screen.
  • Refresh ALL mixes
    • This will refresh all items in the Album file with the latest versions that you have saved locally (this is for Album authors who have the local original files).
    • Displayed in Album files only.
  • Help - User Guide
10Settings Button

Takes you to the Settings screen.

11 / Sequential/Random Play Button

Tap to toggle between sequential play (shown) and random play.

12Playlist Name/Sleep/Play Time Remaining

If you are in 'Lite' / 'Lite+' mode or if you have an active Sleep Timer then this shows the time remaining before Wotja will stop playing. Otherwise this area just show the name of the playlist.

Tap the Sleep Timer button in the top toolbar to go to the Settings Screen where you can configure the Sleep Timer.

13Mix Thumbnail Button

Tap the mix thumbnail to go to "Play Screen" display mode below (see also the "Full Screen" option in the Action Button).

Play Screen
Play Screen

Play Screen
(tap image for large)

The Play Screen is a full screen mode of operation but it still has a toolbar. It is great when you want to sit back, look at any included image/message and reflect on the music, but also to have access to the top toolbar. When you first go into it a Fullscreen Top Panel background appears behind the Menu Bar to help you see the controls. To have it always on see: Settings & General & Show Play Screen Top Panel.

The Play Screen layout is similar to that of the Flow Player except that it has the Album/Playlist Player Menu Bar instead of the Flow Player Menu Bar. Although very similar, the Status Bar is also slightly different as the left hand area shows the Mix Name (instead of Flow) and the right hand area shows the Mix Remaining Play Time.

Tap in the center of the Play Screen to return to the Playlist Player screen.

14Selected Mix Indicator

A faint blue highlight indicates the currently selected mix, this may be different from the playing mix.

15Playing Mix Indicator

The center line displays "Playing" when the mix file is playing.

16Mix Number/Name

Show the number of the mix in the list and its name.

17Mix Duration/Range

Displays the minimum and maximum values for Mix Duration, i.e. the range of values for how long the mix can play for each time. These values are set in the mix file but can be overridden via the 18Mix Actions button (Album file only).

18Mix Selector

Tap the central area (not the thumbnail) to play or stop the mix without going into the Play Screen (see 13Mix Thumbnail button).

19Mix Actions Button

Button not shown in Included Albums

Note: In the Mix Overrides screen below you can choose to override the related settings that are in the Mix File (i.e. Music Mode > Mix Properties > Mix Fades).

Menu options
  • Mix Overrides (Option not shown in Playlists) Mix Overrides

    Mix Overrides Screen
    (click image for large)

    • Ramp Up: Sets how long it takes for the file volume to ramp up once the file has started to play.
    • Duration: Sets how long the file will play for (Mix Duration).
      • Note: This Mix Override has a minimum value of 1 second, and the use case for that is when you want your album to have a custom thumbnail:
        • An album thumbnail is always based on the Display mode settings of the first mix file in the album.
        • If you don't want it to be what is in your "real" first mix then create a silent/empty mix file that displays as you want.
        • Add this mix file to the album, make it the first mix and use Mix Overrides to set its duration to 1 second.
        • When the Album plays it will play this silent mix file for 1 second (you will hardly notice!) and then play will immediately move to the next mix file (your "real" first mix).
    • Range: Sets a range on how long the file can play for (Mix Duration Range).
    • Ramp Down: Sets how long it takes for the file volume to ramp down before play moves to the next file.
  • Random Icon (Album file only)
  • Export Mix to File
    • Where available, this item lets you export your mix so that you can further edit it.
  • Refresh Item from File (Album file only)
    • If you have exported a mix, changed it and saved it, this allows you to refresh the file in the album. Only shown if you have exported that mix file and it is shown in the Documents screen.
  • Move Up
    • Allows you to move a file up the list.
  • Move Down
    • Allows you to move a file up the list.
  • Delete
    • Only shown if you have a subscription enabled or are using the Annual version.
  • Cancel
    • Cancel out of the pop-up.
20Mix Time Remaining

This displays the Play Time remaining for the current file.

This value can only be adjusted in Mix Overrides (Box file only) - see 19Mix Actions button.

Note: The maximum duration for a mix is 4 hours.

Player: TV

Menu Bar Settings Panel Settings Button Sleep Timer Status Sleep/Play Time Remaining Mix Time Remaining Repeat/Continuum Status Next Button Screen Text Background/Screensaver Wotja Watermark Version Feature Set Speech Synthesizer Use Text Display Selector Repeat/Continuum Selector Sleep Timer Selector Randomization Scheme Selector App Name

(tap circle for info, hover for tooltip; tap image for large)

TV Player
  • A simple 'player' app that, once installed on your Apple TV, is launched from the relevant Wotja app icon on your TV.
  • Operates as a 'Flow Player' meaning that it generates a succession of freshly created mixes, but it also lets you repeat the current mix if you so wish (Pro Feature).
  • Once started, the player generates music until such time as you stop music generation via the TV control's Play/Stop button, the Sleep Timer kicks in (if active) or if you are using the free version and the auto-timeout is reached.
  • The music generated, screen background and any text displayed all depend on the various settings in the selected 16Randomization Preset (these are not editable in the TV Player).
  • Tip: Use the play/stop buttons on your TV remote control play/stop music being generated by the Wotja app.
  • Note: The paid-for iOS and Android apps include a TV player that has no auto-timeout; the free versions all have the Lite Feature Set auto-timeout.

AMenu Bar

The top part of the screen that includes 2 buttons - 1Settings button and 6Next button.

BSettings Panel

A pop-up panel that displays when you select the 1Settings button.

1Settings Button

Displays the pop-up BSettings Panel.

2Sleep Timer Status

The icon shows whether the Sleep Timer is on, where it has is a solid shape, or off [as shown], where it is an outline shape.

3Sleep/Play Time Remaining

If a Sleep Timer has been set this will reflect that time. If not, then in the Wotja 22 Pro version it will show an infinity symbol and in the free version it will a countdown timer with a maximum value of 5 mins.

4Mix Time Remaining

Shows how long the current mix has left to play before the next mix is generated or the mix is repeated (if the 14Repeat Selector is toggled to On).

5Repeat Status

The icon shows whether a new mix is to be generated at the end of the mix play time ("Continuum"; squiggle forward icon) or the current mix will repeat ("Repeat"; loopback icon).

See: 14Repeat Selector.

6Next Button

Select this button to force another mix to be generated.

7Screen Text

Whether any text is displayed here depends on the 16Randomization Preset being used.

8Background/Screensaver

The background used depends on the 16Randomization Preset being used.

9Wotja Watermark

This is where the Watermark displays.

There are different Wotja watermarks for the Wotja 22 and Wotja 22 Pro apps.

10Version number

Displays the version number and copyright statement.

11Feature Set

Displays the active Feature Set (not shown in Wotja 22 Pro version).

In the 'Lite' version tap on this for a "Restore In-App Purchases" pop-up menu with OK/Cancel buttons.

  • Cancel:
    • If you select this the alert disappears and nothing happens.
  • OK:
    • If you select this then you’re prompted in the normal tvOS way to enter your Store credentials and the app tries to restore the IAP; if it can, then it updates the table to display the latest IAP state.
12Speech Synthesizer Toggle

Default (Use): Lets you turn on/off support for Text to Speech (TTS).

13Text Display Selector

Select this to choose whether any text is displayed on screen or not (which also depends on the selected 16Randomization Preset, as some simply do not show text). The text can be Cut-up or TTM text, depending on the Randomization Preset.

14 / Repeat Selector
  • (Off) [Default]:
    • A new Flow mix will be generated/play when the current Flow mix has reached its end.
  • (On):
    • The currently playing Flow mix is restarted when it reaches its end, rather than new one being generated.
    • This is a Pro feature.

Note: How long a mix will play for is a setting that is defined in the selected 16Randomization Preset.

15 / Sleep Timer Selector

Select this to display a list of available sleep times ranging from 'Off' to '8 hours'. Select the one you want to return to the Settings menu.

  • (Off) [Default]:
    • Sleep Timer is inactive.
  • (On):
    • Sleep Timer is active

Tip: When the Sleep Timer value is changed Wotja will auto-restart whatever is playing.

16Randomization Preset Selector

Select this to display a list of built-in Randomization Presets. Amongst other things, these determine how long each generated mix will be. Select the Randomization Preset you want to return to the Settings Panel.

Randomization Presets are not editable in the TV Player.

17App Name

Displays the App Name, this being either "Wotja 22 Pro" for the paid-for version. or "Wotja"/"Wotja 22" for the free version.

Player: Watch

Play/Stop Button File Type File Info File Text App Name Next Button

(tap circle for info, hover for tooltip; tap image for large)

Watch Player
  • The Watch Player is a Wotja companion app for Apple Watch. It controls playback of Wotja on an iPhone and requires that the relevant version of Wotja is installed on your iPhone.
  • To use it, first load Wotja on your iPhone. If you then press the 1Play/Stop button on the watch app it will by default start Flow mode playing in the Wotja app for iPhone. You can use the 6Next button to force a new Flow mix to be created.
  • To use it, first load Wotja on your iPhone. If you then press the 1Play/Stop button on the watch app it will by default start Flow mode playing in the Wotja app for iPhone. You can use the 6Next button to force a new Flow mix to be created.
  • Alternatively, if in Wotja for iPhone you first select a Flow or a Box, a Playlist or Mix file (and then open it) the watch app can control play of that, including moving to the next mix (as relevant).
  • The icon displayed in the 2File Type area will depend on whether Wotja for iPhone is in Flow mode, or has a box/album, playlist or mix file open.

1Play/Stop Button

Tap this to start or stop play of Wotja on your iPhone.

2File Type

Displays the icon for the relevant file type/mode, and the name of what is playing.

  • Flow:
    • Shows the default Flow icon and "Flow".
  • Mix:
    • Shows the Wotja icon and name of the mix.
  • User Album:
    • Shows the User Album icon, the number of mixes in the box/album and the name of the box/album.
  • Playlist:
    • Shows the Playlist icon, the number of mixes in the playlist and the name of the playlist.
  • Included Album:
    • Shows the Included Album icon, the number of mixes in the Included Album and the name of the Album.
3File Info

Depending on what is playing the text next to this icon displays as follows:

  • Flow
    • Name of the Flow Randomization Preset in use.
  • Box/Album
    • Number and name of the mix that is playing.
  • Playlist
    • Number and name of the mix that is playing.
  • Mix
    • Root and tempo of the playing mix.
4Screen Text

Where a mix or Randomization Preset is configured to display it, this area shows any included Cut-up or TTM text. This area can be scrolled with the crown.

5App Name

This will be either Wotja 22 Pro or Wotja 22.

6Next Button

Tap this to move to the next mix in a box/album or playlist in Wotja on your iPhone or to force a new mix to be created in Flow.

Player: Mix File

Documents > 14Mix File.

Tutorial
Mix Player
  • Tip: Once the mix is has been loaded it should open in the last used Edit Mode, below.
  • In the bottom tab bar of the Mix Player is a start/stop button and 5 "Mix Edit" Modes, as below.
    • /Play/Stop button
      • Tap to stop or start your the generative mix (if any) in your wotja.
    • Music Mode
      • The editing mode where you configure your mix, using to 16 Tracks each with 4 Cells, and can edit all parameters of the Intermorphic Music Engine (WME) and Intermorphic Synth Engine (WAE).
    • Text Mode
      • The editing mode where you can create and edit Cut-up and text.
    • Display Mode
      • The editing mode where you decide how you want your wotja to look, this being important should you wish to share it.
    • Plug-ins
      • The editing mode where you set up how you want the mix to use hosted 3rd party Plug-ins (Optional; iOS/macOS and Windows only).
    • Record Mode
      • A special non-editing mode where you can make Audio or MIDI recordings of the open mix, as well as manage and preview them.

Player: Safari App Extension

Wotja Mix or Wotja Box files ("Wotja Files") are actually text files. They have a .wotja or .wotjabox extension, but they can be opened in a text editor.

A Wotja URL ("WJURL") is simply the text in a Wotja File. It is really a kind of deep link and it always starts with wotja://. WJURLs can be as little as 3Kb in size.

Tip: WJURLs are not just for use in webpages! You can paste a WJURL into an email, message or any text-supporting app and a 'Pro' mode user can copy it to the clipboard and then import it into Wotja. No file attachment needed!

The Wotja 22 Safari App Extensions for iOS and macOS are included in the Wotja App Bundle for Apple devices. The extensions are facilitators for the relevant Wotja 22 App in that they allow it to play a Wotja URL that is embedded in a webpage.

WJURL mixes can reference hosted AUv3 Plug-ins (e.g. see Fan Favorites) but to play as intended all AUv3 Plug-ins MUST be already installed on the "player" device!

Web-page embedding WJURLs is a cool, fun and is also an easy way for Wotja users to share with others what they have made - try some examples!

Examples

See the examples.

How to Wotjafy a webpage

Create and save a Wotja mix file (.wotja) or a Wotja Box file (.wotjabox).

Open it in a text editor and copy the text to clipboard or use Export mix to Clipboard - this is the WJURL.

The text includes all the WME and WAE settings required by Wotja to play the file and generate its music and/or reference to plug-ins that the relevant mix might refer to, and need to be present and loaded, for the mix to sound as intended.

Paste the WJURL anywhere in a webpage, even in a weblink (href).

How far you want to take your web page design (e.g. text, images, animation etc.) is entirely up to you.

Tip: Wotjas that include background images are much, much larger than those that don't, and use of plug-ins also adds to size (especially plug-ins that can/do save audio samples to a session). We recommend that if you want to allow people to download such Wotja files then you place them on a separate download page - but that is up to you, too.

Advanced: If content in a Wotja URL references content in an add-on Pak then, provided that Pak is located in your Wotja iCloud Drive folder (iOS/macOS), the content will play as expected.

How to Play in Safari

First: See Requirements.

  1. Enable the relevant Wotja App Extension for Safari:
    • Safari > Preferences > Extensions > set relevant "Wotja" checkbox to on.
      • Tip: If you don't want to enable for this website the Wotja App Extension for Safari (our website does not request or require ANY sensitive information, including passwords, phone numbers and credit cards), you can still download the mixes embedded in each page and play them directly in Wotja.
  2. Launch Wotja:
    • Either tap the app icon on your iOS or macOS device to launch it in the usual manner, or;
    • Web developers: Add an embedded a href link "wotja://command=launchapp" to your webpage.
      • When this link is tapped (try tapping the example link above) it will launch and foreground Wotja provided:
        • The visitor already has Wotja installed, and;
          • Important: If there are multiple versions of Wotja installed then this might actually launch one of those instead. Wotja V22+ is required for the Safari App Extension to work!
        • They select "Allow" in the pop-up message "Do you want to allow this page to open 'Wotja.app'?"
  3. Return to Safari:
  4. To stop Wotja playing:
    • Either open a page that includes the text wotja://command=stop in it, such as this one; or
      • NB: This must be the first WJURL in the page (if you have others) - it can even be hidden, as it is in this page
    • Leave the page (by loading a different Safari tab); or
    • In the Wotja app itself, tap the bottom orange "Stop Safari Extension Player" button; or
    • Tap the plugin icon in the Safari URL bar, tap the entry for the Wotja Safari Extension and in the popup menu tap the "Stop" button.

Music Mode: UI

5 Menu Bar Toolbar Cell Grid Area Tab Bar Mix Editor Area Generator Button Area Generator Synth & FX Button Area Cell, Track & Mix FX Button Area Generator Editor Panel Save/Exit Button Randomize Button Column Lock Button Grid Button Generator Network View Selector Generator Menu Button Cell FX Button Cell Mixer View Selector Track FX Button Mix Name Mix FX Button Track Mixer View Selector Cell Properties View Selector Mix Properties View Selector Action Button Settings Button Cell / Selector Cell Playing Indicator Cell Content Name Cell Content - Generative Cell Loop Indicator Cell Rules Computed Values Cell Content - MIDI File Cell Content - Audio File Play/Stop Button Track Cell Sequencing Button Track Solo Button Track Mute Button Music Mode Tab Generator Button MIDI Channel Assignment MIDI Channel Label Generator Synth Button Generator FX Button

(tap circle for info, hover for tooltip; tap image for large)

Documents > 14Mix File > 29Music Tab

Tutorials
Music Mode

AMenu Bar

Contains the 1Save/Exit, 2Randomize, 15Action, Store and 16Settings button and the 10Screen Title indicator.

BToolbar

Contains the 3Column Lock and 4Grid buttons as well as the 5Generator Network, 8Cell Mixer, 12Track Mixer, 13Cell Properties and 14Mix Properties view selectors.

CCell Grid Area

Shown to the left of the screen the Cells Grid area where you access the 17Cell and Track 26Cell Sequence,27Solo,28Mute Controls.

Tip: To select between a left panel display of One Cell, One Column or 4 Columns tap the 4Grid button and select one of the "Display" settings in the pop-up menu.

DTab Bar

The Tab Bar at the bottom of the screen provide access to the 25Play/Stop button button and the various Mix Editing modes: Text Mode, Display Mode, Hosted Plug-ins and Mix Recording.

EMix Editor Area

Select the Editor you wish to use here with the view selectors in the BToolbar.

FGenerator Button Area

The Generator Editor button area is where all the Generators buttons are shown.

Tip: To access the full screen Generator Editor, double tap (or also right click on desktop) a Generator button and from the pop-up Generator Menu select the "Edit:" item.

See the Wotja Music Engine (WME) for info on all the available parameters.

GGenerator Synth & FX Button Area

This area shows the Generator Synth & FX buttons (i.e. for Synth & FX settings that apply to specific generators). These buttons launch the Synth & FX Editor.

See the Wotja Audio Engine (WAE) for info on all the available Synth & FX units and parameters.

HCell, Track & Mix FX Button Area

This area shows the Cell FX, Track FX and Mix FX Buttons. These launch the Synth & FX Editor.

See the Wotja Audio Engine (WAE) for info on all the available Synth & FX units and parameters.

IGenerator Main Editor Panel

The in-screen Generator Main Editor Panel lets you edit generator parameters in-situ without having to use the full screen Generator Editor.

Note: Only the full screen Generator Editor shows the Undo/Redo buttons and the Generator Number Selector bar.

How to hide/display the Panel

  • Option 1:
  • Option 2:
    • Double tap on a Generator Button30 and select "Show/Hide Generator Editor Panel" from the pop-up menu.
1Save/Exit Button

Displays the Save Changes Menu pop-up before exiting to the Documents screen:

  • Save & Close
    • Save the changes you have made to your file and return to the Documents screen.
  • Save & Continue
    • Save the changes you have made to your file and then continue working on it.
  • Save a Copy (Pro only)
    • Creates a new file (which you can rename) based on the current state of the open file (a snapshot of where you are if you like), but leaves you in the current open file - meaning if you then exit the file you will see this pop up dialog again letting you choose what to do with the file.
      • Note: This is NOT the same as Save As so please remember to save your file if you want to keep your changes to it.
  • Discard
    • Lose any changes made to your file since you opened it.
  • Cancel
    • Dismiss this popup and return to the Display screen.
2Randomize Button

Displays the Randomize Menu pop-up:

  • Randomize Mix
    • Replace your current mix with a new randomized mix created in accordance with the currently selected Randomization Preset (RP).
  • Randomize Mix Patterns
    • For all Content Cells randomizes all melodic patterns (these being patterns of B or F type) being used by a Generator of type "Pattern".
  • Randomize Cell
    • Tap any cell (including looping cells) to replace its contents with another randomly selected template. This template is chosen from paks/templates in the Template List that are tagged as available for selection and also uses relevant settings in Randomization Settings (see Edit Randomization Settings).
  • Randomize Cell Melodic Patterns
    • Tap any cell to randomize all melodic patterns used in it by a Generator of type "Pattern", these being patterns of B or F type.
  • Randomize Column
    • Tap any cell in a column to randomly replace the contents of all currently populated cells in the column EXCEPT those that are set to be looping (i.e. locked). Tip: By setting a cell to loop (tap/hold = orange bar) you can ensure that the contents of that cell are not changed when randomizing.
  • Randomize Column (ALL)
    • Tap any cell in a column to randomly populate / replace the content of potentially ALL cells in the column (including looping cells). The number of cells randomized is determined by the "Tracks" setting in Randomization Presets. Tip: Use carefully.
  • Randomize Track
    • Tap any cell in a track to randomly replace the contents of all currently populated cells in the track EXCEPT those that are set to be looping (i.e. locked). Tip: By setting a cell to loop (tap/hold = orange bar) you can ensure that the contents of that cell are not changed when randomizing.
  • Randomize Track (ALL)
    • Tap any cell in a track to randomly populate / replace the content of ALL cells in the track (including looping cells). The number of cells randomized is determined by the "Cells" setting in Randomization Presets.Tip: Use carefully.
  • Randomization Preset List
  • Settings: Randomization Presets
  • Cancel
    • Cancel out of the pop-up menu.
3Column Lock Button

Tap on this button to lock a column to force the play of all cells in that column; tap again to unlock it. Locking of a column only has effect on cells for a Track with Track Rule of type "Sequence" (i.e. the Cell Loop indicator does not show orange). See also: 26Track Cell Sequencing button.

Tip: If you are in "One column" view (see 6Generator Menu Button > "Display: One Column"), then you can see the column number at the top of the IGenerator Editor Panel (assuming you have set it to show).

4Grid Button

Tap the Grid button for the pop-up "Grid Display Mode and Cell Action" Menu. Cell Actions are the same as the Cell Actions Menu

Tip: you can also double tap a Cell for this pop-up menu.

  • Display: One Cell
    • Select this to display in the left area just the selected Content Cell. This is great for when you just want to focus on editing the contents of just one cell, or even to create a complete piece in one Cell (c.f. Noatikl).
  • Display: One Column
    • Select this to display one column of Cells in left area, one that always includes the selected Content Cell. This mode still gives access to the Cell and Track Mixers to set the levels/pans in each Cell and for each Track and is particularly useful if you want to mix together just one column of Cells without Cell sequencing (i.e. a pure generative mix).
  • Display: 4 Columns
    • Select this to display a grid of 4 columns of Cells in left area. It is an overview mode that lets you see how "Cell Sequencing" is working when the Track Rule is set to Sequence. Cell Sequencing can used used to apply a level of arrangement to your mix, allowing spaces for example via empty Cells. It is particularly useful when using loops and if you want to loop different cells that use the same track FX. This mode is also great for "live performance" mixing, too, where you tap/hold a cell to force it to "loop".
  • Show/Hide Generator Editor Panel
    • Default value - Visible: For in-screen editing of a Generator's WME parameters this toggle governs the display or hiding of an optional Generator Editor sub-panel to the right or below (according to device orientation) in the Generator Network Editor panel.
    • Layout:
      • Landscape: The panel is shown to the right of the Generator Network.
      • Portrait: The panel is shown below the Generator Network.
    • Operation:
      • Simply tap/click a Generator button/icon in the Network view to update what is shown in the parameter panel.
      • Clicking the Generator button in the network view on an unfocused Generator will give focus to that Generator and update the panel but doesn’t show the pop-up Generator menu.
      • Clicking on previously focused Generator does show the menu.
5Generator Network View

For details on all the UI elements in this main view refer to the Music Mode schematic, which shows this view selected.

For the selected 17Cell, and ONLY if it contains generative content, the Generator Network View is where you can marry WME Generator Objects (note "Generators") to MIDI channels, WAE synth sounds and FX. The buttons in the network and associated WAE network all provide quick links to the underlying parameters and editors.

Tip 1: Tap/hold on a Generator and you can drag it up/down to change the Generator order.

Tip 2: If you drag from a Generator button to a MIDI channel box that will tell the system that the Generator will play through the defined MIDI channel. If a new Generator is added to a piece, the Generator won't be assigned to a specific MIDI channel; if you haven't yet hooked-up a Generator to a MIDI channel, the WME will decide on a free MIDI channel to hook-up the Generator to when it starts playing.

6Generator Menu Button

Note: See the Wotja Music Engine (WME) Guide for details on Generator parameters.

Tap on this button (and/or right click in the Desktop version) for the pop-up "Generator Menu" below:

  • Edit {Selected Generator}
    • Go to that Generator in the full-screen Generator Editor screen where you can edit the generative music parameters for the Generator.
  • Browse Templates...
    • Displays the Templates screen where you can choose a Template to add to the selected Cell.
    • Note: You can either replace the Cell contents with this or, where the existing Cell content is generative, merge (Pro Feature Set) a selected Template into the existing Cell content.
  • Add Generator of Type...
    • Add a Generator of one of the WME Generator types.
  • Copy
    • Copy the Generator.
  • Paste
    • Paste the Generator.
      • Note: First copy the required Generator, then tap an existing Generator and select Paste.
  • Mute
    • Mute the Generator.
  • Solo
    • Solo the Generator.
  • Delete
    • Delete the Generator.
  • Rename
    • Rename the Generator.
  • Help - User Guide
7Cell FX Button

Displays the Synth & FX editor where you can add/edit FX Networks for the WHOLE Cell.

8Cell Mixer View
Cell Mixer

Music Mode: Cell Mixer
(tap image for large)

Tip: To mix tracks against each other use instead the 12Track Mixer.

Shown in the EMix Edit Area (which is to the right of the CCell Grid Area), the Cell Mixer is where you can easily change the volume and pan levels within the Cell and solo/mute each Generator. Double tap a slider for a pop-up menu where you can manually enter a value.

  • Volume Slider (blue)
    • Tap to change the volume for the relevant Generator's MIDI channel.
    • If you have multiple Generators on one MIDI channel try changing the Generator's Velocity parameters instead.
  • Pan Slider (grey)
    • Tap to change the pan position for the related Generator's MIDI channel.
    • Note: You may have multiple Generators using the same MIDI channel.
  • Mute or Solo button
    • Tap to mute or solo the relevant Generator.
    • Note: These buttons do not at present change color.
9Track FX Button

Displays the Synth & FX editor where you can add/edit Track FX.

10Mix Name

The name of the open mix file.

11Mix FX Button

Displays the Synth & FX editor where you can add/edit Mix FX.

12Track Mixer View
Track Mixer

Music Mode: Track Mixer
(tap image for large)

Tip: To mix the internals of a Cell use instead the 8Cell Mixer.

Shown in the EMix Edit Area (which is to the right of the CCell Grid Area), the Track Mixer is where you can easily change the volume and pan levels of each of the tracks used in the mix. Double tap a slider for a pop-up menu where you can manually enter a value.

  • Volume Slider (blue)
    • Tap to change the volume for the related Track.
  • Pan Slider (grey)
    • Tap to change the pan position for the related Track.
13Cell Properties View
Cell Properties

Music Mode: Cell Properties (List)
(tap image for large)

For each Cell, this is where you set any special properties such as how a Cell will play, as well as the rules used for the content in that Cell.

Tip 1: For general rules that apply to the whole Mix (such as Mix Rules, Tempo, Root, Ramp Up/Down as well as Playlist Duration settings) see the Mix Rules panel.

Tip 2: If you are going to be making your mix or piece available for others to use, you may well wish to include your own copyright statement for each Cell in the mix. Each Generator within a Cell can also have its own copyright statement.

For full information on the Wotja Music Engine (WME) parameters refer to the WME User Guide.

Cell Properties List

Track Cell Sequencing

  • Sequence/One Shot/Loop
    • Sequence (Default value):
      • When the content in the Track's current cell has finished playing, the next Cell in the track will play (unless it has been forced to loop).
    • One Shot
      • No Track Cell will play UNTIL it has been triggered (it will display the green "play marker" in the middle of the cell). Once triggered, any content will play through ONCE (like a sting) and then the cell will stop playing.
    • Loop
      • No Track Cell will play UNLESS it is forced to loop - either by tap/hold on the cell or by setting the Cell Rules "Loop" value to on. Advanced Tip: Cells in Loop tracks containing Audio/MIDI content will play ONCE when the Column lock is first applied to a Column (if a cell is not already looping); cells containing generative content will be set to play for the length of the mix (∞).

Script

Cell General

  • Loop
    • On/Off (Default value - Off): Turn this on to force the Cell to loop continuously. Only once Cell per Track can be looped. Turning on Looping for another Cell will turn off Looping for this Cell.
  • Cell Root
    • Semitone Offset (Default value - Mix Root): Choose the Root you want to apply to the Cell. Its value is a Semitone offset from the Mix Root.
  • Meter
    • Various (Default value - 4:4): Choose the meter you want to apply to the Cell. Each cell can have a different meter.
  • Cell Repeats
    • 0-99 (Default value - 1; 0 Special Case): The minimum base value for the number of times a cell will repeat after it has played through once and to which the range value (below) is added. For a generative template each bar counts as one repeat; for audio or MIDI content this is the length of the content rounded up to the end of a bar).
    • This value is the first of a pair of numbers shown in black in the bottom line of text at the bottom of the cell.
    • 0 (Special Case): If the value is set to 0 a Cell will be "skipped" and "Skip" is then shown in this area. The Repeat Range value slider value is also then ignored.
    • Note: If the cell contains generative content and the Generative Bar Min is value is set to ∞ then this setting takes no effect as the cell never repeats!
  • Cell Repeats Range
    • 0-99 (Default value - 0): Sets the range that applies to the above base value.

    • This value is the second of a pair of numbers shown in black in the bottom line of text at the bottom of the cell.

Cell Generative

  • Gen Bars
    • 0 - 1000 (Default value - ∞): The minimum number of bars for which a cell will play generative content. This value is the first of a pair of numbers shown in the top line of text at the bottom of the cell. The value in brackets next to the Gen Bars value shows what this represents in terms of h:m:s and takes into account the mix tempo.
    • Special Value: If this value is set far left to ∞ [0] then once play in a Track reaches such a cell the generative content in that cell will continue to play either for as long as the mix plays or until you manually select another cell in that Track to play.
  • Gen Bars Range
    • 0 - 1000 (Default value - 0): A value that is added to the Gen Bars value to define the maximum number of bar for which a cell will play generative content. This value is the second of a pair of numbers shown in blue in the top line of text at the bottom of the cell. If the first value (above) is ∞ then this value is not shown.
  • Scale Rule
    • Various (Default value - Mix: Default): When the cell is playing any active rule element will flash; the color. is that of the Generator type of the playing Generator. To edit or change the Cell Scale Rule (which can be overridden at Generator level), tap on it to go to the Rule Editor screen.

      For information on Scale Rules and included "Standard Rule Values" refer to Scale Rule Object.

  • Harmony Rule
    • Various (Default value - Mix: Default): When the cell is playing any active rule element will flash; the color. is that of the Generator type of the playing Generator. To edit or change the Cell Level Harmony Rule (which can be overridden at Generator level), tap on it to go to the Rule Editor screen.

      For information on Harmony Rules and included "Standard Rule Values" refer to Harmony Rule Object.

  • Rhythm Rule
    • Various (Default value - ? [Use Random Cell Rule]): When the cell is playing any active rule element will flash; the color. is that of the Generator type of the playing Generator. To edit or change the Cell Rhythm Rule (which can be overridden at Generator level), tap on it to go to the Rule Editor screen.

      For information on Rhythm Rules and included "Standard Rule Values" refer to Rhythm Rule Object.

  • Next Note Rule
    • Various (Default value - Mix: Default): When the cell is playing any active rule element will flash; the color. is that of the Generator type of the playing Generator. To edit or change the Cell Next Note Rule (which can be overridden at Generator level), tap on it to go to the Rule Editor screen.

      For information on Next Note Rules and included "Standard Rule Values" refer to Next Note Rule Object.

  • Harmonize with Me
    • On/Off (Default value - On): This determines if Wotja needs to take the notes played by this Cell into account when composing/playing other Cells.
  • Harmonize with Others
    • On/Off (Default value - On): This determines if Wotja needs to take the notes played by other Cells into account when composing/playing notes for this Cell.

Cell Info

  • Cell Display Name
    • The Cell Display Name is an editable field and lets you name a Cell as you want.
    • By default, it displays the name of the Template (or audio/MIDI file) used in the Cell.
  • Template Path
    • Displays the path to the Template which includes the Pak zip file that it is in.
  • Content Duration
    • Displays the play length of the content in the cell, important to know for audio loops.
  • Template Title
    • Displays the Title of the Template used in the Cell. Editing this does not change the name of the Template shown in the Cell. If you want to create your own custom Template you can edit this so that if you then export the Cell as a Template this field will then be used in that Template.
  • Template Author
    • Displays the Author of the Template, if it is defined. If you have created your own custom Template you can edit this so that if you then export the Cell as a Template this field will then be used in that Template.
  • Template Notes
    • Displays any Notes in the Notes field the Template, if defined. See above.
14Mix Properties View
Mix Properties

Music Mode: Mix Properties (List)
(tap image for large)

The "Mix Properties" panel is where you can easily set the parameters that define how a Mix will play (Mix FX, Root, Tempo, Mix Rules [if used] and also how you can get text to automatically change (Automatic Text Change group).

The Mix Tempo, Mix Root and Ramp Up/Down settings apply to both a mix and/or that mix in a Playlist.

The Duration/Duration Range are specific to that mix only in Playlists.

Tip: If you are going to be making your mix or Template available for others to use, you may well wish also to include your own copyright statement for each Generator in the mix as it can also have its own copyright statement.

For full information on the Wotja Music Engine (WME) parameters refer to the WME User Guide.

Mix Properties List

Script

Mix General

  • Mix Volume
    • Sets the overall volume of the mix.
  • Mix Root
    • Select the root pitch you want to use for your mix (this value is shown on the Mix Properties button).
    • Note: When creating an automatic mix or a mix from a template a random root is chosen.
  • Tempo
    • BPM (Default value - Template Root): Select the tempo you want to use for your mix (value shown on the Mix Rules button).
  • Mix Scale Rule
    • Various (Default value - Default): When the cell is playing any active rule element will flash; the color. is that of the Generator type of the playing Generator. To edit or change the Mix Scale Rule (which can be overridden at Generator level), tap on it to go to the Rule Editor screen. For information on Scale Rules refer to WME Rule Object.
  • Mix Harmony Rule
    • Various (Default value - Default): When the cell is playing any active rule element will flash; the color. is that of the Generator type of the playing Generator. To edit or change the Mix Harmony Rule (which can be overridden at Generator level), tap on it to go to the Rule Editor screen. For information on Harmony Rules refer to WME Rule Object.
  • Mix Rhythm Rule
    • Various (Default value - Default): When the cell is playing any active rule element will flash; the color. is that of the Generator type of the playing Generator. To edit or change the Mix Rhythm Rule (which can be overridden at Generator level), tap on it to go to the Rule Editor screen. For information on Rhythm Rules refer to WME Rule Object.
  • Mix Next Note Rule
    • Various (Default value - Default): When the cell is playing any active rule element will flash; the color. is that of the Generator type of the playing Generator. To edit or change the Mix Next Note Rule (which can be overridden at Generator level), tap on it to go to the Rule Editor screen. For information on Next Note Rules refer to WME Rule Object.

Mix Fades & Playlists

  • Ramp Up: Seconds
    • 1-20 (Default value - 2): This applies when the mix starts to play (also in a Playlist).
  • Duration: Seconds
    • 10-7200 (Default value - 300): This is how long the mix will play for in a Playlist (overridden by Music Play Time).
    • Double tap for a pop-up menu where you can edit the value via on-screen keyboard.
  • Duration Range: Seconds
    • 10-7200 (Default value - 0): A range value added to the Playlist Duration value (overridden by Music Play Time). Double tap for a pop-up menu where you can edit the value via on-screen keyboard.
  • Ramp Down: Seconds
    • 0-20 (Default value - 2): This applies when the mix stops playing in a Playlist.
15Actions Button

Displays the Actions Menu pop-up:

  • Import Wotja from Clipboard
    • Only shown if you have a Wotja on the clipboard and you will see a message about having to Import a Wotja via the Documents screen (Documents > Add New > Mix (from Clipboard).
  • Export Mix to Clipboard
    • Creates the smallest Wotja URL (WJURL) from your mix.
  • Export Mix with Image
    • Creates a Wotja URL (WJURL) from your mix that includes your a background image (if you have selected one).
  • Script Sandbox
  • Help - User Guide
16Settings Button

Takes you to the Wotja Settings screen.

17Cell / Selector

Cells are at the heart of Wotja as what is in them ("content") determines what Wotja creates in terms of music/audio and also, in some cases, how its sounds (i.e. FX).

Tip: To access the Cell Actions Menu below, either right click on the desired Cell or left click on a Cell you have already selected.

  • Add Template to Cell:
    • When in the 5Generator Network View, tap an empty Cell or its empty EMix Editor Area (which will display "Tap here to browse Templates") to display the Templates List from which you can select and add content to the Cell, be that a generative Template, Audio file or MIDI file (see below).
  • Saved to the Cell:
    • All Template parameter settings (e.g. WME and WAE etc.) and user edits made to them are saved to the Cell. This is so that the mix will work as intended whether or not the underlying Template is accessible in the file system. For more info see this FAQ.
  • Cell display:
    • Can be either: 1 Cell, a Column of Cells or 4 columns of Cells; this is set via the 4Grid Button and selecting the relevant "Display" option from the pop-up menu.
  • Selected Cell
  • Cell Content
  • Cell Actions Menu
    • Browse Templates...
      • Displays the Templates screen where you can choose a Template to add to the selected Cell.
      • Note: You can either replace the Cell contents with this or, where the existing Cell content is generative, merge (Pro Feature Set) a selected Template into the existing Cell content.
    • Copy Cell
      • Copies the currently selected Cell to the clipboard so it can be pasted to another Cell (this is different from exporting a Cell to the clipboard for an import or merge).
    • Paste Cell
      • Pastes a Cell that has been copied to the clipboard.
      • Only shown if a Cell have been copied to the clipboard.
    • Move Cell from here
      • Tap to be able to move the selected Cell.
    • Move Cell to here
      • Moves the contents of a Cell that has been selected with "Move from here".
      • Only shown if "Move from here" has been selected for a Cell.
      • Use with caution as there is no pop-up warning.
    • Loop Cell
      • Tap to force a Cell to Loop (i.e. lock/unlock).
      • See the "Loop" setting in Cell Rules.
    • Import Cell from Clipboard
      • Tap to import into the currently selected Cell a Cell that has been exported to clipboard. NB: Wotja files cannot be imported to a cell.
    • Merge Cell from Clipboard
      • Tap to merge into the currently selected Cell a Cell that has been exported to Clipboard. NB: Wotja files cannot be merged to a cell.
    • Replace Cell from Clipboard
      • Tap to replace the contents of a Cell with a Cell that has been exported to Clipboard. NB: Wotja files cannot be imported into a cell.
    • Export Cell to Clipboard
      • Tap to export the contents of a generative cell (i.e. a [.noatikl] file/template) to the clipboard.
      • This allows you to merge it into another populated Cell, if desired.
    • Export Cell to Template
      • Tap to export the contents of a generative Cell (i.e. a [.noatikl] file/template) to a Template. This file will then show up in Templates List > 9Documents Pak.
    • Clear Cell
      • Tap a Cell to clear out the Cell content.
    • Reset Cell to Defaults
      • Tap a Cell to delete the Cell content AND reset its Cell Properties to defaults.
    • Reset Row to Defaults
      • Tap any Cell in a Row to both delete the content in all Cells in the Track AND reset the Cell Properties of any Cell in the Track (including Track FX) to defaults.
    • Reset Column to Defaults
      • Tap any Cell in a Column to both delete the content in all Cells in the Column AND reset the Cell Properties of all Cells in the Column to defaults.
    • Keep Cell and Clear ALL Others
      • Tap the Cell you want to keep and delete the contents of all other Cells.
    • Keep Cell and Reset ALL Others
      • Tap the Cell you want to keep and both delete the content in all other Cells AND reset the Cell Properties of all Cells to defaults.
    • Clear ALL cells
      • Delete the content in ALL Cells.
    • Reset ALL cells
      • Delete the content in all Cells AND reset their Cell Properties to defaults.
18Cell Playing Indicator

The middle of a Cell displays the Cell Status band and its green color. indicates the following:

  • Green
    • Playing but not looping.
  • Orange
    • Playing and continuously looping.
  • Grey
    • Playing an empty cell (no sound).
  • White
    • Not playing.
19Cell Content Name

This is always the name of the Template that was first added to the Cell. The name is not editable.

Tip: If you wish the Cell to show a different name then you could export that Cell as a Template, giving it the name you wish, and then re-load that new Template.

20Cell Content - Generative

The Cell includes a Wotja Template (see also Templates).

For further information see: 17Cell / Selector.

21Cell Loop Indicator

The middle of a Cell displays the Cell Status band and within that is the name of the file in the Cell. The orange color. of this band indicates the following:

  • Green
    • Playing but not looping
  • Orange
    • Playing and continuously looping
  • Grey
    • Playing an empty cell (no sound)
  • White
    • Not playing
22Cell Rules Computed Values

The bottom of a Cell shows a two line indicator of the Cell's bar "arrangement" values, i.e. how many bars it will play for, and these are presented differently depending on whether the mix is playing or stopped.

The top line of these values shown are the Cell's Generative Bar values.

The bottom line of these values shows the Cell's Cell Repeat Bar values.

  • Mix Stopped
    • Both sets of values are shown with syntax X+Y where X is the set minimum value and Y is the set range.
  • Mix Playing
    • The values for the playing cell are shown with syntax X/Y where X is the calculated minimum and Y is the calculated range value.
  • Infinite
    • The one exception to the above is that if a cell is playing and the Generative Bars value is infinite, an infinite symbol is used for the Generative Bars value.
  • Missing (Red Cell)
    • If audio or MIDI  content referenced in the cell cannot be found then the bottom area displays red. This can happen, for example, if your mix references a loop on your device which you later delete, or you perhaps load someone's piece which references a loop that is not present on your device (i.e. you have not installed the relevant Pak of content).
23Cell Content - MIDI File

The Cell includes a MIDI file.

For further information see: 17Cell / Selector.

24Cell Content - Audio File

The Cell includes an Audio file.

For further information see: 17Cell / Selector.

25Play/Stop Button

This button is used to play/stop a mix and it is common to all Mix Edit Modes (i.e. Music, Text, Display, Plug-ins and Record).

Below the button is display the "Play Time Indicator". It shows time in two different ways:

  • Count Down
    • It will count down from some time if you have a Sleep Timer set (e.g 30 mins if you have a 30 minute Sleep Timer), or from 5 minutes if you are using a Lite Feature Set.
  • Count Up
    • It will otherwise count up from 0 so you can see how long the mix has been playing.
26Track Cell Sequencing Button

Note: There are two ways to trigger a Cell or to start/stop it looping.

  1. Method 1:
    • Tap the Cell and in the pop-up Cell Action menu select Loop or Unloop.
  2. Method 2:
Values:
  • Sequence (Default value - Shown):
    • When the content in the Track's current Cell is playing it will display the green "play marker" in the middle of the cell. When it has finished playing, the next Cell in the track will play (unless it has been forced to loop).
  • One Shot:
    • No Track Cell will play UNTIL it has been triggered. It will display the green "play marker" in the middle of the cell whilst it is playing. Once triggered, any content will play through ONCE (like a sting) and then the cell will stop playing.
  • Loop:
    • No Track Cell will play UNLESS it is forced to loop and when it does it displays an orange bar in the middle of the cell whilst it is looping.
    • Tip: When using the 2Randomize Button "Randomize" menu functions only the item "Randomize Cell (sticky)" will randomize the Cell.
    • Advanced Tip: Cells in Loop tracks containing Audio/MIDI content will play ONCE when the Column lock is first applied to a Column (if a cell is not already looping); cells containing generative content will be set to play for the length of the mix (∞).
27Track Solo Button

Tap to solo or unsolo the related Track.

  • Gold
    • Soloed.
  • Light grey
    • Not soloed.
28Track Mute Button

Tap to mute or unmute the related Track.

  • Dark grey
    • Muted.
  • Light grey
    • Not muted.
  • White
    • When a track is soloed the M in non-soloed or non-muted buttons shows white to indicate they are temporarily muted.
29Music Mode Tab

The Tab that selects Music Mode.

30Generator Button

Tap on a Generator button to select that Generator. The selected Generator has a red border. If the in-situ IGenerator Editor Panel is displaying then you will see the parameters for that Generator and can edit them straight away in that panel.

Tip: Double tap the button (and/or right click on desktop) to display a pop-up menu (for menu details see the 6Generator Menu button).

For full information on the Wotja Music Engine (WME) parameters refer to the WME User Guide.

31MIDI Channel Assignment

To assign a MIDI channel to a Generator, tap/hold the Generator button and drag it to a MIDI channel box.

32MIDI Channel Box

The MIDI channel box is an indicator (it shows the MIDI channel number); it is not a button. However, you can tap/hold a Generator button and drag it to a MIDI channel box.

Note: The Generator "WME Patch" parameter (see also IGenerator Editor Panel) defines which MIDI Patch command to send for each MIDI channel. If you are using Wotja to drive any 3rd party MIDI synth/gear it is therefore recommended that all Generators on the same MIDI channel should use the same Patch parameter.

Note: MIDI Channel 10 is reserved for the Drum instrument. Every Generator with a Drum Patch, should generally be attached to MIDI Channel 10.

33Generator Synth Button

If the "WAE for Sounds & FX" toggle is checked in Settings > Audio MIDI+, then MIDI events are routed for each channel through a WAE Synth configuration. Tap on the Synth button for the Synth & FX editor.

Note: If there is no Synth network defined then the WAE will use its built-in MIDI Wavetable synth (using the Patch defined by the Generator's Patch parameter).

34Generator FX Button

The output from every Synth box can be passed through a custom FX Network. If you want to use an FX on a Generator, click the FX button to invoke the Synth & FX editor.

Generator: Main Editor

Menu Bar Status Bar OK/Back Button Sequence Item Preset Generator MIDI Ch, Track & Column Details Screen Title Help Button Undo Button Redo Button Generator Type Group Shortcut Parameter Groups Header Parameter Group Selector Array Item Editor Shortcut Generator Type Specific Group Selected Parameter Group Generator Type Indicator Array Editor Button Array Item Button Parameter Edit Control Parameter Group Header Generator Number Selector

(tap circle for info, hover for tooltip; tap image for large)

Music Mode > IGenerator Editor Panel

Tutorials
Generator: Main Editor
  • This Music Mode editor lets you edit most of the WME parameter values for each of the Generators in the Cell and provides access to the relevant specialist editor(s) for the remainder. It can be used full screen (as shown above) or in-screen.
  • Full Screen Editor: In the 5Generator Network View tap the 6Generator Menu Button or double tap on a 30Generator Button and select "Edit" from the pop-up menu.
  • In-Screen Editor: In Music Mode, tap the 4Grid Button and in the pop up menu toggle the "Generator Editor Panel" menu item to be "Show Generator Editor Panel".

AMenu Bar

The menu bar contains the 1OK/Back, 5Undo and 6Redo buttons.

BStatus Bar

The Status Bar contains the 7Generator Type Group Shortcut, 9Parameter Group Selector and 2Sequence Item Preset buttons and 3Generator MIDI Ch, Track & Column Details.

1OK/Back Button

Tap to accept your changes and exit the Generator Editor

2Sequence Item Preset Button

Tap for the list of included Sequence Array Presets. Selecting an item from this list will replace the currently selected Sequence Array Item.

3Generator MIDI Ch, Track & Column Details

For the currently selected Generator, shows its Type, MIDI Channel, Track Number and Cell Column.

See also: Wotja Music Engine (WME) Parameters.

4Screen Title

Shows the name of the current screen.

5Help Button
6Undo Button

Undo the last parameter change you have made.

7Redo Button

Redo the last parameter change you have made (i.e. perhaps after an Undo).

8Generator Type Group Shortcut

This selects the Parameter Group for the current Generator Type in the Parameter Groups List below the 8Parameter Groups Header.

9Parameter Groups Header

To make it easier to understand what each WME Parameter is for, related Parameters are grouped together into "Groups".

Tap on the Parameter Group in the Parameter Groups List to have the Parameter List scroll to show it at the top.

Tip: Tap "Basics" to scroll the Parameter Values panel to the top so you can see the Generator name.

See also: Wotja Music Engine (WME) Parameters.

10Parameter Group Selector

Tap a Parameter Group selector to select your desired Parameter Group. This then auto-scrolls the right hand list to the Parameters for that Group.

The first Parameter Group item is the "Generator Group". The 13Generator Type Indicator to the right of it always has a color. related to the Generator Type of the selected Generator and it is where you can change key Generator settings such as Generator Type, Generator Name, Pitch, Pitch Range etc.

See also: Wotja Music Engine (WME) Parameters.

11Array Item Editor Shortcut

This button only displays when the Generator is of Type Sequence. It then shows the Sequence Generator sub-type in use for the currently active Array Item, and its number in the Array Editor list.

Tap on the button to go directly into the relevant Array Item editor.

Example: In the Schematic this button is displayed and shows "#1 Euc", which means that the first item the Sequence Array is selected for use and it is of type "Euclidian".

12Generator Type Specific Group

This group lists the main parameters for the selected Generator Type.

Example: If the Generator Type was Ambient, then tapping on the Group would auto-scroll the right hand parameter list to show the Ambient Generator parameters at the top.

See also: Wotja Music Engine (WME) Parameters.

13Selected Parameter Group

The selected Parameter Group shows with a light blue background color.

14Generator Type Indicator

This is a bar that has the color. of the selected Generator's Generator Type.

15Array Editor Button

Shown only when the Generator is of Type Sequence and it shows the number of items in the Sequence Array (this is likely to be one, unless you have added Array Items). Tap it to launch the Array Editor.

16Array Item Button

This button only displays when the Generator is of Type Sequence. It then shows the Sequence Generator sub-type in use for the currently active Array Item, and its number in the Array Editor list.

Tap on the button to go directly into the relevant Array Item editor.

Example: In the Schematic this button is displayed and shows "#1 Euc", which means that the first item the Sequence Array is selected for use and it is of type "Euclidian".

17Parameter Edit Control

There are a number of different Parameter Edit Controls and these include: sliders, toggles, disclosure buttons.

Wotja also includes the following specialist Generator Parameter editors:

18Parameter Group Header

When you select a Parameter Groups item in the left column then the Parameter List in the right column will scroll so that the Parameter Group Header is at the top. Swipe up / down in this panel to scroll up or down.

19Generator Number Selector

Tap for a pop-up list of all the Generators in the Cell. Select the Generator you want to edit.

See also: Wotja Music Engine (WME) Parameters.

Generator: Rule Editor

Menu Bar Toolbar OK/Back Button Element Playing Indicator Rule Element Selector Screen Title Interval Label Mix Rules List Use Mix Properties Rule Use Random Mix Rule Mix Rule Selector Cell Rules List Cell Rule Selector Selected Rule Add Rule Rule Actions Included Rules

(tap circle for info, hover for tooltip; tap image for large)

Tutorials
Generator: Rule Editor
  • Rule Editors display [Selected] and/or [Editing] next to the relevant Rule item in the list; this is to make it clear which Rule is selected for composition and which Rule will be changed by modifications to top element editing panel.
  • In the Generator/Cell Rule Editors the active Mix Rule is indicated by an append of "[Mix Rule]".
  • IMPORTANT: Rules can be saved in 2 different places - i.e. Mix Rules or Cell Rules:
  • Tip 1: If you want to create/use custom Rules for use in Cells that you export as templates or for use in another mix, then you should create them as Cell Rules. These are saved to the Cell and get exported with a Cell.
  • Tip 2: If you don't want to do the above, but do want to use more than one Rule in a Mix we strongly suggest keeping all such Rules one place - i.e. save/use them as Mix Rules. Every Generator can use a different Mix Rule if you want!
  • Mix Rules:
    • Saved at the top level in the Mix itself, see 9Mix Rule Selector.
    • Mix Rules are available for selection/use by one/any/all Generators in one/any/all Cells, either
      • via the "magic" Mix Rule setting "Use Mix Properties Mix Rule" (which means "use whatever Rule is selected as the Mix Rule in the Mix Properties Panel"); or
      • via selecting one of the Mix Rules in the relevant Rule Editor.
    • Mix Rules have a unique name (there can be only one Mix Rule called e.g. "MyMixRule"). When the element values for a Mix Rule are changed it instantly affects the composition of any Generator that uses that Rule. To affect all Generators in one go, simply configure every Generator in the Mix to use the same Mix Rule!
    • Note: Mix Rules can only be added when the editor is accessed via the Mix Properties panel.
    • The available values are as follows:
      • Use Mix Properties Mix Rule: This is a magic rule that means "use whatever Rule is selected as the Mix Rule in the Mix Properties Panel". When creating a new mix most Templates will use this Rule for both Scale and Harmony Rule types - meaning your mix is already pre-configured to take advantage of Mix Rules.
        • The name of the Mix Rules can be changed but use of "?" is disallowed.
      • Use Random Mix Rule: If this is selected, then when the Mix starts it allows a Mix Rule to be chosen at random from the list of Mix or Cell Rules, as appropriate.
      • Other Rules in this list: Once you have added a Rule (using the Add New button) it can be selected for use by any Generator in a Mix and it can also be renamed. For a quick way to change their values see the Tip above.
      • Tip: You can manually edit the Rule elements in any Rule or, for a fast change of those elements, the use the 15Included Rules Button and select one of the Standard Rule values (e.g. "Chord Major triad"). The Rule element values in the Rule will then be REPLACED with the those of that selected Rule and you will be asked if you wish to rename the Rule.
  • Cell Rules:
    • Saved in the Cell itself, see 11Cell Rule Selector.
    • Cell Rules are only available for selection/use by Generators in that Cell.
    • Cell Rules do not have to have unique names (i.e. 2 different Cells can both have their own completely distinct Rule called e.g. "MyCellRule", but where each such Rule has different Rule elements). As Mix Rules are more powerful then in most cases you will likely want to use those instead. You can still use Cell Rules and might wish to do that when you want each Cell to use a variation on a Rule (i.e. 4 Cells in a Track where you want to use e.g. a "Chord Minor triad" Rule and then manually set up different element weightings for each Cell.
      • Use Cell Rule(Generator Rule Editor only): If this is selected, then the Generator will use whatever Rule has been selected in the Cell Rule Editor.
      • Use Random Cell Rule(Cell Rule Editor only): If this is selected, then when the Mix starts it allows a Cell Rule to be chosen at random from the list of Cell Rules.
      • Default: This is just the Default Cell Rule and has no special significance and the name can be edited.
      • Other Rules in this list: Once you have added a Rule (using the Add New button) it can be selected for use by any Generator in a Mix and it can also be renamed. For a quick way to change their values see the Tip above.
      • Tip: You can manually edit the Rule elements in any Rule or, for a fast change of those elements, the use the 15Included Rules Button and select one of the Standard Rule values (e.g. "Chord Major triad"). The Rule element values in the Rule will then be REPLACED with the those of that selected Rule and you will be asked if you wish to rename the Rule.

AMenu Bar

The menu bar contains the 1OK/Back button.

BToolbar

The Tool Bar contains the 13Add Rule, 15Included Rules and 14Rule Actions buttons.

1OK/Back Button

Tap the OK/Back button to accept your changes and exit the Editor.

2Element Playing Indicator

When a Generator composes a note using the currently selected rule, the rule element that was used flashes with the color. of the Generator type that composed it.

If there are other Generators that also rely on that rule for composition then this color. "flashing" helps to indicate that (in which case, be aware that changing it affect the composition of those other Generators, too).

3Rule Element Selector

The Rule Element Selector lets you change the rule elements. Tap on a rule element to change its value from 0 to 100 (relative probability weighting). The composition engine accommodates all rule changes in real-time - which can be a lot of fun!

Note that if an element is grey, then it is not currently being used for a composed note.

For full information on the Wotja Music Engine (WME) parameters refer to the WME User Guide.

4Screen Title

The screen title which shows whether you have accessed the Rule Editor from:

5Interval Label

Show the elements "interval", i.e. m2 (minor second), P4 (fourth), M6 (major sixth) etc.

6Mix Rules List

The scrollable Rule List contains all of the Mix Rules available to select from - simply toggle on the one you want to use.

To add/edit/rename/delete rules see 14Rule Actions.

7Use Mix Properties Mix Rule

This special "magic" Rule allows use of a Mix Properties "Mix Rule" (the name of this special rule cannot be changed and is always Default).

8Use Random Mix Rule

This special "magic" Rule allows a mix, on starting, to randomly choose/use any Mix Rule (if any).

9Mix Rule Selector

Lets you choose a Mix Rule a from the list of Mix Rules. This will always include the "Default" Rule, but may also include others (i.e. if you have added any).

10Cell Rules List

This area houses the list of Cell Rules that are defined (if any) for the Cell.

11Cell Rule Selector

Lets you choose the Cell Rule to use from the list of Cell Rules (if any) - simply toggle on the one you want to use.

If you are selecting a Rule for a Generator then you will also see / can select "Use Cell Rule" (meaning use whatever Rule is selected in Cell Properties, e.g. Cell Scale Rule).

12Selected Rule

The selected (and active) rule has shows with a light blue background.

13Add Rule

When you select the Add Rule button you are presented with a pop-up menu that lets you add a new Rule (and whether is shows as "Add New Cell Rule" or "Add New Mix Rule" depends on whether you are in the Generator Editor/Cell Rules View or Mix Rules View).

For the list of included Rules see the following:

14Rule Actions

When you select the Rule Actions button you are presented with the following pop-up menu:

  • Rename:
    • Use this to rename your Rule. Note that you are not permitted to rename the Mix Properties Default rules.
  • Copy Rule:
    • Use this to copy a Rule so that you can paste it as a new Rule.
  • Paste Rule:
    • Pastes a Rule that has been copied.
  • Delete Rule:
    • Deletes the selected Rule. Note that you are not permitted to delete Default rules.
  • Cut Rule:
    • Use this to cut a Rule.
  • Help - User Guide
15Included Rules

When you select the Included Rules button you are presented with pop-up menu that lists all the included "Standard Rule Values". Simply select the one you want to use and the values of that Rule will REPLACE those of the currently selected Rule. You will also see a pop-up asking you if you want to rename the Rule.

For the list of included "Standard Rule Values" see the following:

Generator: Envelope Editor

Menu Bar OK / Back Button Selected Envelope Area Draw Mode Screen Title Macro Mode Envelope Area Actions Button Macro Selector Selected Macro

(tap circle for info, hover for tooltip; tap image for large)

Music Mode > IGenerator Editor Panel > Generator Groups List > Envelope Parameters (see below).

Generator: Envelope Editor
  • Generator Envelopes are supported for the following WME parameters:
    • Volume
    • Pan
    • Velocity
    • Velocity Range
    • Velocity Change
    • Velocity Change Range
  • Envelopes work in the same way for all of these. This view is where you edit the Generator Envelopes.
  • Each envelope is a collection of up to 100 data points. A piece starts with the value at the left side of the envelope, and as it progresses, eventually ends up with the value from the far right of the envelope.

AMenu Bar

The menu bar contains the 1OK/Back button.

1OK Button

Tap the OK button to accept your changes and exit the Editor.

2Selected Envelope Area

Shows an area that has been selected in Macro Mode.

3Draw Mode

Draw Mode: Select this if you want to draw direct on to the envelope with your finger/mouse to change the values.

4Screen Title

The screen title.

5Macro Mode

Macro Mode: Select this to use one of the various macro envelope editing tools on a selected area (e.g. random, curve up etc.).

6Envelope Area

The envelope area is active meaning you can draw on it (Draw Mode) or select and area (Macro Mode).

7Actions Button

This displays the pop-up Actions menu with the "Help - User Guide" menu item.

8Macro Selector

The following Macros can be selected:

  • Select All
  • Ramp Up
  • Ramp Down
  • Normal Curve Up
  • Normal Curve Down
  • Curve Ramp Up
  • Curve Ramp Down
  • Minimum
  • Maximum
  • 0 dB (CC7=90)
  • Center (CC10=64)
  • Up
  • Down
  • Invert
  • Random
9Selected Macro

The selected Macro is shown with a light blue background.

Sequence: Array Editor

Menu Bar Toolbar Array Actions Button OK/Back Button Sequence Type – TTM Probability Indicator TTM Text Add Button Screen Title Move Up Button Move Down Button Cancel Button Delete Pattern Array Item Number Note Pattern Representation Sequence Type – Euclidian Sequence Type – Pattern B Sequence Type – Pattern R Sequence Type – Pattern F Sequence – Chain Sequence – Chain Syntax Sequence Item Menu Array Item Selector Sequence Item Selected

(tap circle for info, hover for tooltip; tap image for large)

Music Mode > IGenerator Editor Panel > Generator Groups List >Sequence Button > Array Editor.

Sequence: Array Editor
  • A Sequence Array is in effect a list one or more Sequence Array Items, each containing all the settings needed for use by one of the Sequence Generator sub-types, these being: Text to Music, Euclidian or Pattern (Both, Rhythm, Fixed).
  • Tip: Note sequences can be used to create hidden structure in a mix. Set up a Sequence Generator with your preferred sub-type and set its volume envelope to be zero, but do not mute it (or it will not count in terms of composition). Then, follow that Sequence Generator with a Generator of type Follow and which has Chords Strategy set to Chordal Harmony. You will never hear the original pattern but it will be used as an invisible skeleton around which to compose! If you do want to hear the pattern, set Follows Strategy to Semitone Shift in the Follow Generator.

AMenu Bar

The menu bar contains the 2OK/Back and 10Cancel buttons.

BToolbar

The tool bar contains the 1Actions, 6Add, 8Up, 9Down and 11Delete buttons.

1Array Actions Button

Displays a pop-up menu with the following options:

  • Export Sequence Array to Clipboard
  • Import Sequence Array from Clipboard
  • Replace Sequence Array with Preset...
    • Selecting one of these listed Preset items will replace the entire existing Array of Sequence Items:
      • Both (B): Whole note rest; 1 bar
      • Chain (S): #1 once, #2 once
      • Chain (S): #1 twice, #2 twice
      • Chain (S): #1 or #2 twice, then #1 or #2 twice
      • Chain (S): #1 once, #2 until end
  • Help - User Guide
2OK/Back Button

Tap the OK button to accept changes you have made.

3Array Item - Sequence: Pattern: Text to Music (TTM)

Sequence Array Item of type Text to Music (TTM).

Uses Text-to-Music techniques for melody generation.

4Probability Indicator

Displays the weighted probability for the Array Item. This can be between 0 and 100. When a mix starts (and if there is no Sequence Chain defined) then an Array Item is chosen for the Generator according to the Probabilities set for each Array Item.

You can set this for the Array Item via the 20Array Item Menu button, or via the Action Menu > "Probability" item in the relevant Array Item Editor.

Example: If there are 3 Array Items each with a Probability of 100, then the chance of any one Item being chosen is 100/(100+100+100).

5TTM Text

If the Generator is of type "Text to Music (TTM)", this shows the (first line) of text used for note generation.

6Add Sequence Item Button

Tap for a pop-up menu with a list of Sequence Item presets. See also Pattern Syntax.

Tap the item you want and it will add the preset to the bottom of the list (and above any Chain item).

  • Text to Music (TTM) Custom
  • Text to Music (TTM) Cut-up
  • Euclidian (Euc)
  • Both (B): Random 1/4 notes; 1 bar
  • Both (B): Random 1/8 notes; 1 bar
  • Both (B): Random 1/16 notes; 1 bar
  • Both (B): Random Triplet notes; 1 bar
  • Both (B): Random syncopated; 1 bar
  • Both (B): Ascending pitch; 1 bar
  • Both (B): Descending pitch; 1 bar
  • Both (B): Whole Note Rest; 1 bar
  • Both (B): White Note; 1 bar
  • Rhythm (R): 1 bar
  • Rhythm (R): 1/4 notes; 1 bar
  • Fixed (F): 1/4 notes; 1 bar
  • Fixed (F): Notes and Rests; 1 bar
  • Chain (S): 2 Sequences
  • Chain (S): 3 Sequences
  • Chain (S): 4 Sequences
7Screen Title

Displays the name of the screen.

8Move Up Button

Moves the selected Array Item up the Array (List).

9Move Down Button

Moves the selected Array Item down the Array (List).

10Cancel Button

Discard any changes you have made.

11Delete Item

Deletes the selected Array Item.

12Array Item Number

Display the Array Item number e.g. #1.

13Note Pattern Representation

This indicator gives you a visual representation of the generated note sequence.

14Array Item - Sequence: Pattern: Euclidian (Euc)

Tap on this Euclidian Array Item to launch the Sequence: Euclidian Editor.

Uses the Euclidian technique for melody and beat note sequence generation.

15Array Item - Sequence: Pattern: Both (B)

Tap this Pattern: Both (B) Array Item to launch the relevant Sequence: Pattern Editor.

Uses a Pattern Syntax technique for note sequence generation. Includes both scale interval and note duration and is used when you want to work with a "melodic" pattern.

16Array Item - Sequence: Pattern: Rhythm (R)

Tap this Pattern: Rhythm (R) Array Item to launch the relevant Sequence: Pattern Editor.

Uses a Pattern Syntax technique for note sequence generation. Includes note durations only and is used when you want the pitches to be chosen at random from any of those available in the Generator's Scale Rule (according also to Harmony, and Next Note Rules).

17Array Item - Sequence: Pattern: Fixed (F)

Tap this Pattern: Fixed (F) Array Item to launch the relevant Sequence: Pattern Editor.

Uses a Pattern Syntax technique for note sequence generation. Both the root pitch and note pitches are explicitly defined (i.e. there is no dependency on scale rule) and is used mainly for beat patterns using Channel 10 MIDI.

18Array Item - Sequence: Chain (S)

Tap this Chain (S) Array Item to launch the Sequence: Chain Editor.

Uses a Sequence Chain Syntax technique to allow random or sequenced selection of Array Items.

19Sequence – Chain Syntax

This indicator shows the Sequence Chain Syntax for a Chain Array Item.

20Array Item Action button

Displays the following pop-up menu:

  • Edit-Graphical
  • Probability (weighting)
    • Use this to set the 4Probability weighting for the Array Item, with values between 0 - 100.
  • Edit - Text
  • Export to Clipboard
  • Import from Clipboard
  • Sequence Item Presets...
  • Move Up
  • Move Down
  • Delete
21Array Item Selector

Tap an Array Item to load the relevant Sequence Item Editor, these being for Text to Music, Euclidian, Pattern (Both, Rhythm, Fixed) or Sequence Chain.

22Selected Item

The Array Item that is being used by the Generator has a light blue background.

Sequence: TTM Editor

Menu Bar OK / Back Button Randomize Button Note Sequence & Cut-up Text Graphic Screen Title Actions Button Cancel Button Cut-up Rule Selector Custom Text Button Parameter Control Value Up/Down controls

(tap circle for info, hover for tooltip; tap image for large)

Sequence: TTM (Text to Music) Editor
  • This is a special editor for editing parameter values for the Text to Music (TTM) generator sub-type.
  • Refer to the Text to Music (TTM) section of the WME Guide for information on all the TTM parameters and settings.
  • To edit Text used by the 7Cut-Up Rule parameter use the editor in Text Mode.
  • To edit Text used by the 8Custom Text parameter use its own editor below.
AMenu Bar

The menu bar contains the 1OK/Back and 5Actions buttons.

1OK/Back Button

Tap the OK button to accept changes you have made.

2Randomize Button

Depending on what the 7Cut-Up Rule button option has been set to (as below; see Cut-up Rule options), tapping this button will randomize the text as follows:

  • Custom
    • The TTM Custom Text field is randomized according to the setting of the Shuffle Option Button (see 8Custom Text Editor).
  • Cut-up: Line# = Track#
    • All lines of the Text Mode cut-up are randomized (word locks are respected).
  • Cut-up: All Lines
    • All lines of the Text Mode cut-up are randomized (word locks are respected).
  • Cut-up: Line# (value)
    • Only the text of the specified line is randomized in the Text Mode cut-up (word locks are respected).
3Note Sequence & Cut-up Text Graphic

Shows you the number of notes your text generates as well as the Cut-up text that is being used to generate those notes.

4Screen Title

Displays the name of this Editor.

5Actions Button

Displays the following pop-up menu:

  • Probability
  • Export Sequence Text to Clipboard
    • Allows you to export the Sequence Array Item to the Clipboard.
  • Import Sequence Text from Clipboard
    • Import a Sequence Array Item from the Clipboard.
  • Edit Sequence Text
    • Allows you to directly edit the Sequence Array Item text string (for expert use only).
  • Export TTM Melody
    • Allows you to export the melody in a Pattern B format.
  • Rule Editor
    • Provides quick access to the Text Mode Rules List so that, if you wish, you can select a different cut-up rule to use for your Cut-up.
  • Help - User Guide
6Cancel Button

Tap the Cancel button to discard any changes you have made.

7Cut-up Rule Selector

Tap this button for a pop-up menu showing you the Cut-up Rule options available.

If you select the "Use Custom Text" option, then you can instead use text you enter via the 8Custom Text Editor.

8TTM Custom Text Button
Wotja Music Mode: Sequence Custom Text

Sequence - Custom Text Editor
(tap image for large)

The TTM Custom Text Button shows below it the Custom Text, if any, that is in this special field. Tap the button for the Custom Text Editor as shown above.

If you set the 7TTM Cut-up Rule parameter to be "Custom Text" then you can use the Custom Text Editor to enter your own custom text for TTM, rather than the Cut-up Rule line number association to text in Text Mode.

As with all TTM text, it can be in can be in any language and, in general, it takes 2 characters to generate a note.

Menu bar Action button:

  • Clear Text:
    • Clears the text area.
  • Export TTM Melody:
    • Exports the Sequence Array Item to the clipboard.
  • Export Text to Clipboard:
    • Exports the Custom Text to the clipboard.
  • Import Text from Clipboard:
    • Imports what is on the clipboard into the Custom Text Editor.

Shuffle Option Button (LHS Toolbar Button, setting used by RHS Toolbar Randomize button):

  • Shuffle Words:
    • Shuffles existing TTM words in this text area when the RHS Toolbar Randomize button is tapped.
  • Shuffle Text
    • Shuffles all characters in existing TTM words in this text area when the RHS Toolbar Randomize button is tapped.
  • Random Words:
    • Allows the creation of a simple cut-up derived from words in your word pool. How many words are used is governed by the TTM Min Words and TTM Max Words settings in Randomization Settings.

Randomize Button: Carries out the action set in Shuffle Option Button, above.

Text Area: Tap the screen to enter your TTM text.

9Parameter Control

Use the Slider control to adjust the parameter value, or double tap it for a pop-up menu where you can manually enter the value you want or randomize it.

For details on the TTM parameters refer to the Sequence: Text To Music (TTM) section of the Wotja Music Engine (WME) guide.

10Value Up/Down controls

Tapping a - / + button will decrement / increment the value by one.

Sequence: Euc Editor

Menu Bar OK / Back Button Randomize Button Note Sequence Graphic Screen Title Action Button Cancel Button Parameter Control Value Up/Down Controls Duration Menu Bar Pitch Strategy

(tap circle for info, hover for tooltip; tap image for large)

Sequence: Euclidian (Euc) Editor
  • This is a special editor for editing parameter values for the Euclidian generator sub-type.
  • Refer to the Euclidian (Euc) section of the WME Guide for information on all the Euclidian parameters and settings.
AMenu Bar

The menu bar contains the 1OK/Back button.

1OK/Back Button

Tap the OK button to accept changes you have made.

2Randomize Button

Tap to Randomize settings of Steps, Fills and Rotation (only).

For details on the Euclidian parameters refer to the Sequence: Euclidian section of the Wotja Music Engine (WME) guide.

3Note Sequence Graphic

Shows a simple representation of the generated note sequence.

4Screen Title

Displays the name of this Editor.

5Action Button

Displays the following pop-up menu:

  • Probability
  • Export Sequence Text to Clipboard
    • Allows you to export the Sequence Array Item to the Clipboard.
  • Import Sequence Text from Clipboard
    • Import a Sequence Array Item from the Clipboard.
  • Edit Sequence Text
    • Allows you to directly edit the Sequence Array Item text string (for expert use only).
  • Help - User Guide
6Cancel Button

Tap the Cancel button to discard any changes you have made.

7Parameter Control

Use the Slider control to adjust the parameter value, or double tap it for a pop-up menu where you can manually enter the value you want or randomize it.

For details on the Euclidian parameters refer to the Sequence: Euclidian section of the Wotja Music Engine (WME) guide.

8Value Up/Down controls

Tapping a - / + button will decrement / increment the value by one.

9Duration

Tap this for a pop-up menu with a range of Duration options.

For details on the above refer to the Duration parameter in the Sequence: Euclidian section of the Wotja Music Engine (WME) guide.

10Rhythm Strategy

Tap this for a pop-up menu with the following Rhythm Strategy options: "Built-In" and "Use Rhythm Rule".

For details on the above refer to the Rhythm Strategy parameter in the Sequence: Euclidian section of the Wotja Music Engine (WME) guide.

11Pitch Strategy

Tap this for a pop-up menu with the following Pitch Strategy options: "Pitch: Fixed MIDI Pitch", "Pitch: Interval in Scale Rule" and "Ignore: Let Wotja Compose Each Note".

For details on the above refer to the Pitch Strategy parameter in the Sequence: Euclidian section of the Wotja Music Engine (WME) guide.

Sequence: Pattern Editor

Menu Bar Toolbar Editing Area OK/Back Button Edit Mode Button Bars Button Note Length Button Screen Title Note Align Button Undo Button Action Button Cancel Button Redo Button Grid X-axis Grid Y-axis Grid Note Button

(tap circle for info, hover for tooltip; tap image for large)

Access: Generator: Main Editor > 10Array Item Editor Shortcut or Sequence: Array Editor > 21Array Item Selector

Sequence: Pattern Editor
  • This is a special editor for editing parameter values for the Pattern generator sub-type.
  • Most of the interface is common, but what is shown in the grid area varies depending on the Pattern type - see 11Grid X-axis and 12Grid Y-axis.
  • Refer to the Pattern section of the WME Guide for information on all the Pattern parameters and syntax.
  • Both (B) Wotja Settings General screen

    Tap image for large

    This is what you see when editing Both (B) patterns.

    Rhythm (R) Wotja Settings Audio MIDI+ screen

    Tap image for large

    This is what you see when editing Rhythm (R) patterns.

    Fixed (F) Wotja Settings Randomization screen

    Tap image for large

    This is what you see when editing Fixed (F) patterns.


AMenu Bar

The menu bar contains the 1OK/Back, 8Action and 10Cancel buttons.

BToolbar

The toolbar contains the 2Mode, 3Bars, 4Note Length, 6Note Align, 7Undo and 10Redo buttons.

CEditing Area

The area where you edit the pattern.

1OK/Back Button

Tap the OK button to accept changes you have made and return to Pattern List.

2Edit Mode Button

There are 3 Edit Modes:

  • Draw:
    • Tap on the grid to add a note.
  • Edit:
    • Tap on a note to see/edit the Velocity Scale (default: 100) and Velocity Scale Range (default: 0) for the note.
  • Delete:
    • Tap on a note to delete it.
3Bars Button

Tap for a pop-up dialog that lets you set how many bars your pattern has from 1 to 50 (Default 1).

4Note Length Button

Tap for the pop-up "Note Length" menu that lets you select the note length you wish new notes to have when you add them (see also Pattern Syntax):

  • 1 note (semibreve, 240 ticks)
  • 1/2. note (dotted minim, 180 ticks)
  • 1/2 note (minim, 120 ticks)
  • 1/4 note (crotchet, 60 ticks) [Default]
  • 1/8. note (dotted quaver, 45 ticks)
  • 1/8 note (quaver, 30 ticks)
  • 1/12 note (triplet, 20 ticks)
  • 1/16 note (semiquaver, 15 ticks)
  • 1/24 note (-, 10 ticks)
  • 1/48 note (-, 5 ticks)
5Screen Title

Displays the name of the screen.

6Note Align Button

Tap for the pop-up "note quantization" menu that lets you select the "snap to grid" resolution you have when you add a new note (see also Pattern Syntax):

  • 1 note (semibreve, 240 ticks)
  • 1/2. note (dotted minim, 180 ticks)
  • 1/2 note (minim, 120 ticks)
  • 1/4 note (crotchet, 60 ticks) [Default]
  • 1/8. note (dotted quaver, 45 ticks)
  • 1/8 note (quaver, 30 ticks)
  • 1/12 note (triplet, 20 ticks)
  • 1/16 note (semiquaver, 15 ticks)
  • 1/24 note (-, 10 ticks)
  • 1/48 note (-, 5 ticks)
7Undo Button

Tap to undo the last change you made (only 1 level of undo/redo is supported)

8Action Button

Tap the button for the following pop-up:

  • Probability
  • Randomize
    • Tap to randomize the Pattern using the note value currently defined by the Length button.
  • Replace with TTM Melody
    • Tap to replace the Pattern with the melody that has been created in the Text to Music parameter for the Generator - this requires either that the TTM "Cut-up Rule" is set to Custom and the "TTM Text" parameter includes text OR the "Cut-up Rule" is correctly set to use a line of Cut-up that has text in it. Refer to both the parameters for Generator Type Text to Music and the TTM Editor, as relevant to you.
  • Create Cut-up & Replace with TTM Melody
    • This is a powerful way to quickly create a new pattern, but it only applies if you have the "Cut-up Rule" correctly set to use a line of Cut-up (all TTM Templates are set up like that, so have a look at one of those).
  • Export Sequence Text to Clipboard
    • Exports the current Pattern (as text) to the clipboard.
  • Import Sequence Text from Clipboard
    • Imports a Pattern that is on the clipboard and replaces the existing Pattern with that.
  • Edit Sequence Text
    • Go to a simple text editor where you can manually edit the pattern.
  • Move All Notes Up
    • Moves all notes up one row.
  • Move All Notes Down
    • Moves all notes down one row.
  • Help - User Guide
9Cancel Button

Discards changes made since entering the Editor.

10Redo Button

Tap to redo the last change you made (only 1 level of undo/redo is supported)

11Grid X-axis

For Patterns of type Both, Rhythm and Fixed the grid has an X-axis of Bars. Beneath that, each bar is split into Beats (each bar has 240 Beats).

For Patterns of type Sequence the Grid has a different layout and is instead a "Sequence Element" list, see Y-axis below.

12Grid Y-axis

Pattern Type (see also Pattern Syntax):

  • Both:
    • The grid has a Y-axis of Scale Rule elements. That is to say, each row corresponds to an element that is available in the Scale Rule used by the Generator. "B1" (where "B" is both "Both") represents the first Scale Rule element that is available, B2 the next and so on (and remember that Scale Rules can have 1 to 12 elements in use per Octave!). What note this plays depends on the Base Pitch set for the Generator and the Pitch Range. The way that Scale Rules can "wrap" means this may or may not correspond to the Root note being used by the Cell or Mix.
  • Rhythm:
    • The grid has a Y-axis of just one row because there is no pitch information in a Rhythm rule - just note durations.
  • Fixed:
    • Similar to "Both" above, but where each row is a defined note pitch (e.g. F60). "F" refers to "Fixed" and the number that follows it is the pitch of the note.
  • Sequence:
    • The Grid has a different layout and is instead a "Sequence Element" list, as follows where each list item has the following parameters:
      • Sequence Minimum: Sets the Pattern List Item number that is used (e.g. item #2).
      • Sequence Range: Sets a range of Pattern List Items that can be used (e.g. 0 means none, 1 would mean also select item #3 etc.
      • Repeat Minimum: Sets how many times you want each select List Item to play.
      • Repeat Range: Sets the range on how many times you want each select List Item to play, where this number is added to the Minimum value.
13Grid Note Button

Each note in the pattern is shown as a Note Button. Tap on the button to select it. What you can then do depends on the Edit Mode Button2

Sequence: Chain Editor

Menu Bar Toolbar Add OK/Back Button Move Up Button Move Down Button Screen Title Delete Undo Button Action Button Cancel Button Redo Button Chain Header Selected Chain Item Chain Item Number Chain Item Number Range Chain Item Repeat Chain Item Repeat Range

(tap circle for info, hover for tooltip; tap image for large)

Access: Sequence: Array Editor > 18Sequence Chain Item

Sequence: Chain Editor

AMenu Bar

The menu bar contains the 1OK/Back, 8Action and 10Cancel buttons.

BToolbar

The toolbar contains the 1Add, 3Move Up, 4Move Down, 6Delete, 7Undo and 10Redo buttons.

1Add Button

Tap to add a new Chain Item.

2OK/Back Button

Tap the OK button to accept changes you have made and return to the Sequence Array Editor.

3Move Up Button

Tap to move the selected Chain Item up one.

4Move Down Button

Tap to move the selected Chain Item down one.

5Screen Title

Displays the name of the screen.

6Delete

Tap to delete the selected Chain Item.

7Undo Button

Tap to undo the last change you made (only 1 level of undo/redo is supported)

8Action Button

Tap the button for the following pop-up:

  • Probability
    • You can use this to set the Probability weighting for the Chain Item, with values between 0 - 100.
  • Export Sequence Chain Text to Clipboard
    • Exports the Chain (as text) to the clipboard.
  • Import Sequence Chain Text from Clipboard
    • Imports a Chain that is on the clipboard and replaces the existing Chain.
  • Edit Sequence Text
    • Go to a simple text editor where you can manually edit the Chain.
  • Help - User Guide
9Cancel Button

Discards changes made since entering the Editor.

10Redo Button

Tap to redo the last change you made (only 1 level of undo/redo is supported)

11Chain Header

Shows the Header name, "Sequence Chain".

12Selected Chain Item

The selected Chain item has a light blue background.

13Chain Item Number

This is the number of the Array Item you want to sequence. See Array Editor > 12Array Item Number.

14Chain Item Number

The range in Array Item numbers.

15Chain Item Repeat

The number of times you want the Array Item to repeat.

16Chain Item Repeat Range

The range in number of repeats you want for the Array Item.

SFX Network Editor

Menu Bar Toolbar Unit Editors OK/Back Button Presets Button Randomize Button Synth/FX Network Area Screen Title Polyphony Button Help Button Settings Button Cancel Button Action Button Audio-Rate Unit Audio Signal Path Selected Unit Connector Line Control-Rate Unit Add Controller Button Controller Unit Selector Controller Scale Value Controller Parameter Selector Delete Controller Button Controllers Panel

(tap circle for info, hover for tooltip; tap image for large)

Access: Music Mode > 33Generator Synth button or 34FX button or 7Cell FX button or 9Track FX button or 11Mix FX button

Refer to Wotja Audio Engine (WAE) section for detailed information on all units and their parameters.

Tutorials
Synth & FX Editor
  • The Synth & FX Editor is used to design / view and edit both Synth Networks or FX Networks and is quite easy to use one you understand how it works and how everything fits together.
  • The 4Synth/FX network area shows a visual representation of the network design, but is also active as you can tap it to add a new unit.
  • 11Audio-rate units are shown in the top row of the network and 16Control-rate units are shown in the bottom row. Units are always numbered from left to right and from 1 upwards; they are automatically renumbered if you ever delete a unit.
  • Tips:
    • If there are no units shown then it means there is no Network defined.
    • The 13Selected Unit is highlighted with a red surround.
    • Depending on which button in the Music Mode > 5Generator Network View you tap to access the editor you will be editing a Synth or FX Network - the 5Screen Title tells you what you are editing.
    • Use the top 2Presets button for a range of included Synth (.tg) or FX (.fxm) presets (you can even load ones you have saved). What is shown depends on whether you are in Synth or FX network.
    • Synth Units are also called Sound Units or Tone Generators (TG); the terms are used interchangeably.
    • Use the top 3Randomize button to quickly change your Sound or FX Network. Every time you tap the button a Preset is chosen at random ("lucky dip") from ALL available presets (i.e. the built-in ones or ones you have saved). This allows quick experimentation with sounds and FX and is a lot of fun, too!
    • To build a stereo synth network, use a Synth Unit's pan parameter (or even a following Amp unit) to spatially position its sound. You can have as many Synth and FX Units, Controllers and Junctions in your network as you want (device capability permitting).

AMenu Bar

The menu bar contains the 1OK/Back, 8Settings and 9Cancel buttons.

BToolbar

The toolbar contains the 2Presets, 3Randomize, 6Polyphony, 7Help and 10Action buttons.

CUnit Editor

This panel is where you can edit the settings for the selected WAE unit.

Refer to the Wotja Audio Engine (WAE) section for detailed information on all units and their parameters.

1OK/Back Button

Tap the OK button to accept the preset and return to the Synth & FX Editor.

2Presets Button
WAE Synth Presets List

WAE - Synth Presets List
(tap image for large)

The WAE Presets List is launched from the "Presets" button at the top of the Network Editor. Using presets is a very easy way to quickly change the sounds and fx used in a mix. See also Use of Synth & FX in Randomization Presets.

Whether you see the Synth Presets (.tg) list or the FX Presets (.fxm) list depends on whether you have accessed the WAE Network Editor via a:

To preview a preset first make sure you have your mix playing and then just tap on it. If you want to use it tap the top left < OK button to exit the list; if you want to discard it then press the top right Cancel button to exit the list.

Any custom presets you have saved can be found in the Saved Files grouping at the top on the left.

You can easily zip up your custom presets into a zip with the following paths being used for sounds and fx for your own folders:

/sounds/tg-preset-group-name/xxx.tg
/fx/fx-preset-group-name/xxx.fxm

Tip: The zip file just needs to be placed in the Wotja Folder.

Tip 2: The zip file can be called anything except wj_tgfxm.zip.

Use of Synth & FX Presets in a Randomization Preset

  • Synth Presets:

    • If ANY Synth Presets have been toggled on in the Randomization Preset WAE Network Presets > Synth Presets list, then one of those that are toggled on will be chosen at random to replace the WAE Sound Network for every TTM Template (i.e. TTM1 Players or TTM1 Players 2) created in a new auto-mix or Flow, or when a Cell is randomized and a TTM Template is selected.
    • Note: If no Synth Presets are selected in the Randomization Preset then no such random selection occurs.
  • FX Presets:

    • If ANY FX Presets have been toggled on in the Randomization Preset WAE Network Presets > FX Presets list, then one of those that are toggled on will be chosen at random to be used for the 14Mix Properties > Mix FX setting for a new auto-mix or Flow.
    • Note: If no FX Presets are selected in the Randomization Preset then no such random selection occurs.
3Randomize Button

Tapping this button chooses a Synth or FX preset at random ("lucky dip") from ALL available presets (i.e. the built-in ones or ones you have saved). This allows quick experimentation with sounds and FX and is a lot of fun, too!

4Synth/FX Network Area
Synth & FX Editor Meter - Audio

Meter: Audio
(tap image for large)

Synth & FX Editor Meter - Oscilloscope

Meter: Oscilloscope
(tap image for large)

An Audio meter or Oscilloscope can be displayed for the selected unit, as shown below, if the "Synth & FX Editor: Show Meter/Scope" setting is toggled on.

Adding Units
Selecting/ Editing Units
  • Tap the unit whose settings you want to edit in the CUnit Editor, or double tap a Unit button for a pop-up 10Action menu (where the first item in it lets you edit the unit full screen; for an example see Edit Wavetable Full Screen).
  • Note: The Junction unit does not have an editor as it is just sum the inputs of anything feeding it (so nothing happens when you tap on it).
Deleting Units
  • Tap the 10Action Button and select either Delete Unit (which deletes the currently selected unit) or Clear Network (if you want to clear the entire network!).
  • Double tap a Unit button for a pop-up menu where you can also do as above.
5Screen Title

The Title will display the MIDI Channel number (for Generator Sounds or FX), Cell, Track or Mix depending on the context, appended by either Synth or FX depending on whether it is a Synth or FX network.

6Polyphony Button

Displayed in Synth networks only. Tap this button to display a pop up list where you select the polyphony level used by the Generator(s) playing through this network. The default value is 4; set this too high, and your computer/device might slow down; set it too low, and you likely won't hear as many notes playing in chords or when notes have long decays (due to note stealing).

7Help Button
8Settings Button

Tap this button to go to the Settings screen.

9Cancel Button

Tap to discard any changes you have made since entering the Synth & FX Editor.

10Actions Button

Displays the following pop-up Actions menu:

  • Save
    • Select to save your Synth Network "Tone Generator" (XML file with extension .tg) or FX Network (XML file with extension .fxm), depending on what kind you are editing.
  • Export to Clipboard
    • Select to export to clipboard your Synth Network or FX Network, depending on what kind you are editing.
  • Import from Clipboard
    • Select to import from clipboard a Synth Network or FX Network.
  • Edit Unit Full Screen
    • Select to edit the selected Unit in a full screen editor.
  • Delete Unit
    • Select to delete the selected Unit.
  • Clear Network
    • Select to clear the entire Synth or FX Network.
  • Help - User Guide
11Audio-Rate Unit

Audio-rate units (see Glossary) are units that operate at the audio output frequency (e.g. 44kHz) - that means Synth units (i.e. "Tone Generators") and FX units.

Double tap a unit for the following "Unit Action" pop-up menu (all pretty self explanatory):

  • Edit Full Screen:
  • Add Unit Before:
    • Add a unit before the selected unit (displays the Add Unit pop-up menu).
  • Add Unit After:
    • Add a unit after the selected unit (displays the Add Unit pop-up menu).
  • Copy:
    • Copy the selected unit.
  • Paste Before:
    • Paste a copied unit before the selected unit.
  • Paste After:
    • Paste a copied unit after the selected unit.
  • Delete Unit:
    • Delete the selected unit.
  • Clear Network:
    • Clear the entire network.
12Audio Signal Path

All units on this line will be audio-rate units.

13Selected Unit

The currently selected unit has a solid red outline.

14Connector Line

The connector line shows which Synth or FX units are connected to and being modulated by Control-rate units.

The controller unit selected in the 21Controllers Panel has a red connector line.

15Control-Rate Unit

Control-rate units (see Glossary) are units that operate at a much lower frequency that audio-rate units and are used for modulation of parameters, e.g. the LFO and Envelope units.

Double tap a unit for the following "Unit Action" pop-up menu (all pretty self explanatory):

  • Edit Full Screen:
    • This allows you to edit a unit full screen (for an example see LFO Full Screen).
  • Add Unit Before:
    • Add a unit before the selected unit (displays the Add Unit pop-up menu).
  • Add Unit After:
    • Add a unit after the selected unit (displays the Add Unit pop-up menu).
  • Copy:
    • Copy the selected unit.
  • Paste Before:
    • Paste a copied unit before the selected unit.
  • Paste After:
    • Paste a copied unit after the selected unit.
  • Delete Unit:
    • Delete the selected unit.
  • Clear Network:
    • Clear the entire network.
16Add Controller Button

This button allows you to add a new Controller to preexisting Audio-rate or Control-rate unit. This is how you do it:

  1. Select the Unit you want to be modulated (e.g. Osc Unit);
  2. Tap on an empty/blank part in the top half of the 4Synth/FX Network area to display the Unit Add menu and then select a control-rate unit (e.g. Ctrl-Envelope Unit);
  3. Tap the unit you want to be modulated (i.e. that added in 1 above) and tap the Add Controller button to add a 14Connector;
  4. For that Connector, you then select the 17Controller Unit Selector to choose the Controller unit that will do the modulation (e.g. Envelope Unit);
  5. Non-Junctions Only: Tap the 19Controller Parameter Selector for a drop list of parameters (if any) that can be modulated in the Unit selected in step 1 and tap to select one (e.g. Amplitude);
  6. Finally, use the 18Controller Scale Value slider to change the Scale Value applied to the modulation (+/-2) before it is passed to the parameter of the Unit selected in step 1. Setting this to 0 means no modulation is applied. For Junctions the Scale Value is a way to balance how much of the output of each Unit is blended together. Note: If more than one control-rate unit feeds a specific parameter on a target unit, they will get added together automatically (including the appropriate scaling factor).
17Controller Unit Selector

Displays a pop-up that allows you to choose the Controller unit (from those added/present in the network) that will do the modulation (e.g. Envelope Unit).

18Controller Scale Value

This sets the Scale Value applied to the modulation (+/-2) before it is passed to the parameter in the Unit that the controller is connected to. Setting this to 0 means no modulation is applied.

For Junctions the Scale Value is a way to balance how much of the output of each Unit is blended together. Note: If more than one control-rate unit feeds a specific parameter on a target unit, they will get added together automatically (including the appropriate scaling factor).

19Controller Parameter Selector

Displays a drop list of parameters (if any) that can be modulated in the Unit that the controller is connected to.

20Delete Controller Button

Deletes the selected controller unit in the 21Controllers Panel.

21Controllers Panel

IMPORTANT: The Synth & FX Editor does not support dragging to add Controllers; these have to be added via the Controller panel "+" button. This button is greyed until you select an Audio Rate Unit (e.g. Tone Generator or FX unit) that has a Controller Unit somewhere to the left of it otherwise no Controller can be added! Also, Controllers can not be added to some units, e.g. Compressor, as they have have no modulateable parameters.

All Units (i.e. both audio-rate and control-rate), except Junction Units (below), have some parameters that can be controlled (modulated) by control-rate Units (LFO, Envelope, Amp). Each Unit you want to control can have as many Connectors (lines) as you like, and these are separately numbered for each Unit. This allows all kinds of fun and clever sound design stuff to be done in the WAE. The Connectors and Controllers are displayed / selected at the bottom of the screen and/or on the bottom left.

You can tell if a Unit (audio-rate or control-rate) has been set up to be modulated by a Controller as you will see a blue or red line attached that is connected to control-rate unit to the left of it.

Junctions (audio-rate or control-rate): These units are colored grey, have no interfaces, and are used only to sum together the outputs of a number of Units of the same audio-rate or control-rate type, meaning the units they sum are always on the same line.

Controller Editing:

See: 16Add Connector

Text Mode

Menu Bar Screens Top Toolbar Bottom Toolbar Save/Exit Button Cut-up/Edit EOL Rhyme? Toggle Text Sources Screen Title Edit Text Button Saved Text Text Properties Action Button Settings Button Rules Button Text Line Number Text Button Unlocked Text Button Locked Text Area Word Mix Control Use Words Button Text Mode Tab Create Cut-up Button Cut-up Mode Button Text Alternatives Bar Selected Text Button Character Count

(tap circle for info, hover for tooltip; tap image for large)

Documents > 14Mix File > 18Text Tab

Tutorials
Text Mode
  • Text Mode comprises 4 screens: 2Cut-up/Edit, 4Sources, 7Saved Text and 8Text Properties.
  • It is where you create/edit text used in your mix, whether purely for display purposes, for "Text-to-Music" (TTM) (see the TTM Cut-up Rule) and also Text to Speech (TTS).
  • The powerful "cut-up technique" is great for generating ideas for lyrics, poems, haiku etc as it allows you to quickly generate random word associations from a pool of words. This pool can include words from:
    • Up to 5 user entered text fields ("Sources", saved in the mix file)
    • A user editable word library ("User Library", saved in Wotja)
    • A user editable general word library ("General Library", saved in Wotja)
    • A non-editable Wotja library ("Wotja Library")
  • You can lock down ("Lock") any words you want (a locked word will not be changed when you press the 19Create Cut-up Button) or, for just a selected word, choose one of the alternative cut-up words presented.
  • You can use Rules ("Rules") to constrain your cut-up by lines, words and syllables.
  • Keep iterating until you find the interesting, inspiring or serendipitous combinations of words you are looking for. Save the the best Cut-ups ("Saved") and then use in real-world lyrics, poems, haikus, tweets etc.
  • The 15Text or created Cut-up, 14Word Locks, associated 11Text Rules, 4Sources and 7Saved Text are all saved in your Wotja file.
  • For your cut-up you get to choose how many lines and how many words per line you want in it and whether you want Wotja to attempt End of Line (EOL) rhyming.
  • Tip: The Randomization Preset includes the "Text for Source #0" field into which you can enter text that you wish to be added to Source #0 whenever an auto-mix or flow is created using that Randomization Preset. If you set Word Mix to 0, then these words are your entire word pool for cut-up. You can use this if you wish to share your Randomization Preset and you will know the recipient will experience cut-up as you intend it.
  • Important: We respect copyright and strongly encourage you to do the same. That means if you use Wotja to come up with a lyric you like, make sure that it does not infringe the copyright of any of your source material. Wotja is pretty good at creating random "cut-ups", but it is just a tool for you to use to generate ideas. It is ultimately your responsibility to make sure you are not infringing anyone else's copyright.

AMenu Bar

Contains the 1Save/Exit, 9Action and 10Settings button and the 5Screen Title indicator.

BScreens

There are four Text Mode screens.

CTop Toolbar

Contains the 11Rules Button, 3EOL Toggle and 6Edit Text button and the 23Character Count indicator.

DBottom Toolbar

Contains the 16Word Mix control, 17Use Words button, 19Create Cut-up button and 20Cut-up Mode button.

1Save/Exit Button

Displays the Save Changes Menu pop-up before exiting to the Documents screen. For the menu items see the Music > 1Save/Exit button.

2Cut-up/Edit Screen

This is the screen shown in this Schematic.

3EOL Rhyme? Toggle

Default Value: Setting in the currently selected Randomization Preset

Values: On/Off

Setting determines whether Wotja, when creating a Cut-up, attempts to rhyme the ends of lines with other lines. For true, random, cut-up, then you would leave this set to EOL - OFF.

4Sources Screen
Wotja Text Mode: Sources Screen

Text Mode: Sources Screen
(tap image for large)

This is where, for each mix, you input and store all the custom (i.e. non-Library) text you want to be used as a source in that mix for a Cut-up. The sources are saved in the your Wotja file and you can have up to 5 of them.

To select the Source field, tap the top "Source: #" control for a pop-up menu (shown above).

The Source text area is editable and supports plain text only. You can move words around by cutting and pasting, or even edit or manually add in new words.

Tap to clear the text from the currently selected Source.

Actions button menu:

  • Export Source to Clipboard:
    • Exports the currently selected source.
  • Export all Sources to Clipboard:
    • Exports all 5 source fields to the clipboard.
  • Import Source from Clipboard:
    • Imports what is on the clipboard to the currently selected source.
  • Help - User Guide

Tip 1: The more interesting the source material you use, the more interesting the cut-up suggestions generated. You can think of your favorite source materials like spices or ingredients, and then build up a collection of your favorites to add when you want. You can then add as little or as much as you like!

Tip 2: Why not try using text from some current news item as a Source - that way you can make sure you use words that are current, and some interesting themes can seemingly come out of nothing!

Tip 3: The more words there are in your Sources the more options for cut-ups.

Tip 4: To use the "Sources Only" cut-up mode requires that you have at least one source defined.

5Screen Title

Displays the name of the Text Mode Screen you are in.

6Edit Text Button
Text Mode - Text Editor

Text Mode: Edit Screen
(tap image for large)

Found in the top toolbar, the "Edit Text" button takes you to a full screen text editor where you can manually edit and enter text. This is so you can change a word in a cut-up or add new words or even replaces with your own words (in both cases a suitable new matching Rule will be generated).

When you have finished editing your text then press "OK" or "Cancel" to return back to the Text "Edit & Cut-up" screen.

Note: When you have changed the number of words in any line and exit this screen you will be presented with a pop up message of "Change the Rule?". Select "Yes" if you want a new rule to be created to match your words (this is important if you want to use that word arrangement for new cut-ups).

7Saved Text Screen
Text Mode: Saved Text Screen

Text Mode: Saved Text Screen
(tap image for large)

This is where you can see all the Text or Cut-ups ("Text Items") you have chosen to save. These are saved in your Wotja file.

Tap a Saved Text Item to select it - a grey background indicates the currently selected item in the list.

Each Saved Text Item includes the text and all text locks that were used. At the top right of the item is displayed the Rule used for the text and a character count showing the total characters and the line characters in brackets after that.

The Edit button copies the selected Saved Text Item to the Cut-up & Edit screen, replacing what is there.

Tip: The Automatic Text Change > Use Saved Text toggle allows Saved Text Items to be used in a very creative manner in a mix. When the above toggle is on, your mix can sequentially display Saved Text Items according to the various Change settings, instead of randomly generating a cut-up. Any words in your Saved Text Items that are not locked will be randomized just as it if was a cut-up.

The Action button displays the following pop-up menu:

  • Edit:
    • Copy the selected Saved Text Section to the "Cut-Up & Edit" screen for editing.
  • Move Up/Down:
    • Use these buttons to change the order of Saved Text Sections.
  • Delete:
    • Delete the selected Saved Text Section.
  • Saved Text to Clipboard:
    • Copies the selected Saved Text Item to the Clipboard.
  • All Saved Text to Clipboard:
    • Copies all Saved Text Items to the Clipboard.
  • Append Sections from Clipboard:
    • Populate your Saved Text with something you have created in a text editor.
    • Tips: Use a blank line to separate sections; use a <br> if you want a blank line within a section.

      Example 1 - two sections

      This is section 1
      
      This is first line of section 2
      This is last line of section 2
                

      Example 2 - four sections

      This is this is section 1
      
      This is section 2
      And this last line of section 2
      
      Yeah! - this is section 3
      
      Wow - this is section 4
      <br>
      With two lines
                
  • Help - User Guide
8Text Properties Screen
Text Mode: Text Properties Screen

Text Mode: Text Properties Screen
(tap image for large)

For each mix, this is where you set how you want text to be used by the mix, and how Text to Speech is used.

Text Properties List

Mix Automatic Text Change

  • At Mix Start
    • Default Value: Uses value in the currently selected Randomization Preset
    • Values: On/Off
    • This setting allows a new mix cut-up to be created automatically on mix start.
  • Change After Seconds
    • Default Value: Uses value in the currently selected Randomization Preset
    • Values: 3-1000
    • This mix setting allows a new mix cut-up to be created automatically after a certain time, specified in the parameters below.
  • Seconds Between
    • Default Value: Uses value in the currently selected Randomization Preset
    • Values: 3-1000
    • If the Change After Seconds toggle is on, this determines the minimum time before a new cut-up is generated.
  • Seconds Between Range
    • Default Value: Uses value in the currently selected Randomization Preset
    • Values: 3-1000
    • The range in value that can apply to the above time.
  • Use Saved Section Text?
    • Default Value: Uses value in the currently selected Randomization Preset
    • Values: On/Off
    • When on, this setting allows your mix to sequentially display Saved Text sections according to the Change settings above, instead of randomly generating a cut-up.
    • Tip: Any words in your Saved Text sections that are not locked will be randomized just as it if was a cut-up.
  • Use Saved Text: Random Sequence?
    • Default Value: Uses value in the currently selected Randomization Preset
    • Values: On/Off
    • When on as well as the setting above, this setting allows a Saved Text section to be selected at random, rather than sequentially.

Text to Speech: On/Off

  • Speech Enabled
    • Text to Speech (TTS): iOS 13+; macOS 10.14+; tvOS 13+ only
    • Default Value: Uses value in the currently selected Randomization Preset
    • Values: On/Off
    • This must be toggled on for you to hear TTS, as well as Use Speech Synthesizer being toggled on in Settings.
    • Text to Speech is based around a concept of Speech Voices and Locales.
    • How TTS works:
      • Speech Voice
        • Every voice has a unique name (e.g. Daniel), and this has a particular sound.
        • Every Voice is associated with a specific Locale (e.g. English - US).
      • Locale
        • Every Locale is represented by one or more Voices (e.g. there is more than one English - US voice).
        • Every Locale e.g. English - US - might have 1 or more regional variations (e.g. English - GB).
      • Speech Voice Change
        • You define when Wotja chooses which Voice to use moving forwards, by the "Voice Change" property.
        • The "Voice Change" (Manual, Automatic etc...) defines *when* a new Voice changes.
        • NB if Manual is set, then the last selected voice will be used when mix next re-opened.
      • Speech Voice Selection
        • You define the Voice to use by a variety of Filters, based around Name, Locale, Locale variations and Gender (requires iOS 14.3+, tvOS 14.3+ and macOS TBA).
        • If you want to, you can force a Wotja Mix to always use a specifically named Voice.
        • Alternatively, you can set the Voice name to be "Random"; in which case, your Voice is selected at random according to whatever Locale you specify (which might in turn be "Random", or could be (say) "English US").
        • If you're selecting a voice at random, for a given locale; you can allow the Voice to be selected from the pool of all regional variations of the locale you've specified; e.g. rather than just English (US), you might allow *all* English regional variations.
        • NB: Every voice is identified by it's name. Every voice is also associated with one locale. Every locale might have zero or more voices associated with it. Where we display the voice name list, we display the locale alongside it (so you can see that (say) Daniel has locale of en-gb); otherwise, it'd be impossible to really understand the operation of the various Locale rules.
        • NB: If Speech Name is set to anything other than "Random", we disable the other Filter cells (locale name, locale regional variations switch and gender)
      • Style
        • If you set Style to Speak, each *line* of text has rate/volume/pitch applied to it.
        • If you set Style to Sing or Speak, the rate/volume/pitch are applied at the Word level.
      • Pitch/Rate/Volume Sliders
        • Volume slider:
          • 0 : quietest speech
          • 50: middle point (neutral)
          • 100: loudest speech
          • Wotja selects a volume between the Volume, and Volume + Volume Range.
          • Wotja applies a further random variation across words, if Style is Speak or Sing.
        • Rate slider:
          • 0 : slowest speech
          • 50: middle point (neutral)
          • 100: fastest speech
          • Wotja selects a rate between the Rate, and Rate + Rate Range.
        • Pitch slider:
          • 0 : halve the pitch (shift down by up to 1 octave)
          • 50: middle point (neutral pitch)
          • 100: double the pitch (shift up by up to 1 octave)
          • Wotja selects a pitch between the Pitch, and Pitch + Pitch Range.
          • Wotja applies a random variation across words, if Style is Sing.
          • Pitch slider effect is harder to hear when you have the "Sing" option, because the Pitch slider is used as an overall scale to shift in additional to any pitch changes generated by the engine, and unfortunately the internal "pitch" property in iOS/macOS actually only works in a rather narrow range of 2 octaves; any pitch values outside of this are clamped.

Text to Speech: Voice Selection

  • Voice Name
    • Default Value: Uses value in the currently selected Randomization Preset
    • Values: List of values
    • Select the voice you want or set to Random.
    • Note: If on loading a mix a specifically named speech voice isn't found (e.g. macOS voice, not present on your iOS device or vice versa) we use the system voice instead.
    • Refer to Text to Speech section above.
  • Language
    • Default Value: Uses value in the currently selected Randomization Preset
    • Values: List of values
    • Can only be set if Voice Name is set to Random.
    • Refer to Text to Speech section above.
  • Allow Regional Variations
    • Default Value: Uses value in the currently selected Randomization Preset
    • Values: On/Off
    • Can only be set if Voice Name is set to Random.
    • Refer to Text to Speech section above.
  • Speech Gender
    • Default Value: Uses value in the currently selected Randomization Preset
    • Values: Any; Male; Female
    • Can only be set if Voice Name is set to Random.
    • Requires iOS 14.3+, tvOS 14.3+ and macOS TBA.
    • Refer to Text to Speech section above.

Text to Speech: Other

9Actions Button

Popup Actions menu:

  • Lock All:
    • Locks all words in the Text.
  • Unlock All:
    • Unlocks all words in the Text.
  • Save Text / Save Text (x/y):
    • Save Text: Displayed if your Saved Text list is empty; Select this to save your Text to the Saved Text list.
    • Save Text (x/y): Displayed if you are editing Text (x) from the Saved Text list of (y) items; Select this to replace that Text with your amended Text. Example: Say you have 3 sections of Saved Text and you are editing the second one. The menu item will then display Save Text (2/3).
  • Append New / Append to Saved:
    • Append New: Displayed if there are no Saved Text sections; Select this to save your Text as the first Saved Text section.
    • Append to Saved: Shown when you have already some Saved Text sections; Select this to appended your Text as a new Text section at the end of the Saved Text list.
  • Export Text to Clipboard (Pro only):
    • Exports the Cut-up to the clipboard (i.e. so you can share it e.g. in a message, email, chat, instant message or other communication etc.).
  • Import Text from Clipboard: Imports a Cut-up from the clipboard.
    • Any "non-breaking space" is replaced with normal space to prevent very confusing behavior when subsequently toggling word locking.
    • All imported/edited words are locked by default
  • Export Mix to Clipboard (Pro only):
    • Exports the Mix to the clipboard (without background image).
  • Export Mix with Image (Pro only):
    • Exports a Mix from the clipboard with to include any background image.
  • Help - User Guide
10Settings Button

Takes you to the Settings screen.

11Edit Rules Button

Default Rule: Uses value in the currently selected Randomization Preset

Values: Various included; user customized

The Rules Button button displays the Cut-up Rule ("Rule") currently being used to create cut-ups. If it has a name then that will also be shown, otherwise you will see the Rule Syntax (below).

  • Tap on the Rules button to go to the Rules List (below) where you will see a list of all the Rules available for selection - simply tap on a rule to select it for use.
  • Tap on a Cog Button in the Rules List to go to the Rule Editor (below).
  • To add Rules see "How to Add/Edit Rules" (below).

Tip: Rules are stored in a Wotja file. When you create a new Cut-up then the Rules List is populated with the default rules. The cut-up uses only the rule you select and you can delete any of these rules you don't want to be used for cut-up.

Use of "Custom Rule" field in Randomization Presets

  • Tap on the "Cut-up Rules" RP item and select "Custom Rule" from the drop down Rule List to be shown the Rule Editor screen where you can enter your rule.

Rules List

Text Mode - Rule List

Text Mode: Rules List
(tap image for large)

See also the Rule Syntax.

  • Tap a Rule to select it.
  • Tap the Cog Button to the right of it for the Rule Editor.
  • Action Button pop-up menu:
    • Add Rule:
    • Move Up:
      • Move the Rule item up.
    • Move Down:
      • Move the Rule item down.
    • Delete:
      • Delete the Rule item.
    • Export to Clipboard:
      • Select to export all rules to the clipboard.
    • Import from Clipboard:
      • Select to import rules that are on the clipboard. Wotja ensures there are no duplicates.
    • Prune Rules:
      • Remove all rules from the list that are not actually used in this Wotja file.
    • Use Default Rules:
      • Replace all the rules in your Wotja file with the default rules (use carefully!).

Rule Editor

Text Mode - Rule Editor

Text Mode: Rule Editor
(tap image for large)

See also the Rule Syntax.

  • Rules Field: This is editable.
  • Title Field: This is editable.
  • Line Summary: This displays the word and syllable count for the line. Tap the line to expand it so you can use the sliders to change the rule values.
  • Slider controls:
    • Words Minimum: The minimum number of words in the line of cut-up.
    • Words Maximum: The maximum number of words in the line of cut-up.
    • Syllables Minimum: The minimum number of syllables in the line of cut-up.
    • Syllables Maximum: The maximum number of words in the line of cut-up.
  • Action Button pop-up menu:
    • Add: Add a new line to the Rule.
    • Move Up: Move the Rule line item up.
    • Move Down: Move the Rule line item down.
    • Delete: Delete the Rule line item.

How to Add/Edit Rules

  • Add New Rule (4 4 4 4):
  • Add New Custom Rule:
    • Tap the Text Edit Button5 and in the Text Editor screen type any old text for the kind of rule you want (where any single letter counts as a word, you do not have to type full words), e.g.:
      A A A A A 
      A A
      A A A
      would be a "5 2 3" rule. On leaving the screen select Yes in the "Change the rule?" pop-up.
  • Add New Custom Rule:
    • Create a Rule in any text editor (e.g. 3 5 6 6), copy it and then from the Action Menu select "Import All from Clipboard".
  • Add New Custom Rule:
    • Create a Rule in any text editor (e.g. 3 5 6 6), copy it and then paste it into the Rule Editor "Rule" field.
  • Edit Rule:

Cut-up Rule Syntax

A basic Cut-up Rule is very simple - it is just a text string that consists of a series of numbers. Each number stands for the number of words to put in a particular line of the cut-up. For example, the four spaced numbers 3 4 5 6 would represent four lines of cut-up. The first line would have three words, the second would have four words, the third would have five words, and the fourth would have six words.

Line Rule Syntax - Advanced

Tip: Items in [ ] are optional.

LineWordsMin [- LineWordsMax[:SyllablesMin [-SyllablesMax]]]

Composite Syntax

LineRule1 LineRule2 LineRule1 [title:"Name"]

Using the above syntax it is easy to create a Haiku rule with 3 lines of words within a range and and fixed number of syllables of 5,7,5 for those lines. e.g.:

1-5:s5 2-7:s7 1-5:s5 title:"Haiku"

12Text Line Number Button

A button that shows the line number of the Cut-up (see also Rule Syntax).

Tap the button to perform a Cut-up on just that line. Word locks are respected.

13Text Button Unlocked

An unlocked word (shown) can be replaced whenever a new cut-up is created (e.g. tap the Create Cut-up Button). Tap a word to lock or unlock it.

14Text Button Locked

An locked word (shown) will not be replaced when a new cut-up is created (e.g. tap the Create Cut-up Button). Tap a word to lock or unlock it.

15Text Area

The text area is where your cut-up (text) is shown.

Lines are alternately colored so that if your Text wraps you can easily see which line the words are in.

Tap a word to lock or unlock it (it shows in blue when locked). When you select a word (locked or unlocked) it also underlines it to show that it is the selected word (e.g. "Text-to-Music" in the screenshot above). To select a word without changing its lock state tap on it and then drag away from it and release. Even though the word does not display an underline, it is now selected.

16Word Mix Control

Default Value: Uses value in the currently selected Randomization Preset

Values: 0-100 [set manually]

The position of the Word Mix slider determines what proportion of words are selected from your Sources or from the User Library and/or Wotja Word Bank.

Left means use words only from Sources, and right means use words only from your Word Library. Any where in between is a blend!

17Use Words Button
Text Mode - Use Words

Text Mode: Use Words Button
(tap image for large)

Tap the "Use Words" Button to select what words you want to be available in the "wordpool" available for selection when creating Cut-ups.

Default Value: Uses value in the currently selected Randomization Preset

Values:

  • Sources + User Library (S+U):
    • Your wordpool for cut-up includes Sources and the User Library.
  • Sources + Libraries User & General (S+UG):
    • Your wordpool for cut-up includes Sources as well as the User Library and General Library.
  • Sources + Libraries User & Wotja (S+UW):
    • Your wordpool for cut-up includes Sources as well as the User Library and Wotja Library.

Word Libraries

  • User Library:
    • A user-editable text library that can contain your own favorite words ("spices"). It is stored in Wotja, i.e. not stored in a mix file. To edit it, tap the "Use Words" button and select "Edit User Library".
  • General Library:
    • A user-editable library of over 650 words included in Wotja. It is stored in Wotja, i.e. not stored in a mix file. To edit it, tap the "Use Words" button and select "Edit General Library".
  • Wotja Library:
    • A large non-editable library of older stranger words which when used can lead to some interesting results!
18Text Mode Tab

The Text screens are only available in Text Mode.

19Create Cut-up Button

Provided you have first added some words to at least one of the Sources text boxes above (or you have some words in your User Library or the Wotja Word Bank toggle is on AND the Library slider is not hard over to the right) then when you click this you'll see a Cut-up appear in the text area. Each time you click this button all non-locked words will be replaced by words selected at random from your word pool and/or Library/Word Bank.

20Cut-up Mode Button

Tap the Cut-up Mode button to choose how your cut-up is created.

  • Word Lock (WL):
    • In this classic mode, words can be locked, and the non-locked words are changed using the active rule (including syllables), and are sourced from Sources text, User Library and any Word Bank data you might have defined. This mode is very useful for fine-tuning a cut-up.
  • Sources Only (SO):
    • This new cut-up mode analyses the structure of the Sources text and lets you create cut-up with a more natural feel; in this mode the cut-up is created from Sources ONLY and it uses the active rule (ignoring syllables) but EOL rhyming and word locks are ignored.
  • Edit Text; no Cut-up (ET):
    • Word locking doesn't apply in this mode so the cut-up button is shown greyed out.
    • The text is treated as just plain text and punctuation is retained.
21Text Alternatives Bar

This is displayed just above the bottom toolbar. If you tap on one of the four alternative words (e.g. "restful" in the screenshot above) then that word will replace the selected word (e.g. "Text-to-Music" in the screenshot above). To refresh the alternative words shown, either tap a blank part of the cut-up area or tap the Create Cut-up button.

22Selected Text Button

The selected word is indicated by an underscore.

23Character Count

Displays the number of characters in your Cut-up (useful to know if you plan on tweeting your Cut-up) and number of syllables in each line.

Display Mode

Menu Bar Toolbar Save/Exit Button Show Button Screen Title Display Properties Button Action Button Settings Button Screen Background Screen Text Area Wotja Watermark Display Mode Tab

(tap circle for info, hover for tooltip; tap image for large)

Documents > Mix File14 > Display Tab10

Display Mode
  • ShowWotja Display Show screen

    Tap image for large

    The "Show" segment is where you can see or preview how things will look, and you can also go full screen from the Action menu.

    Properties Wotja Display Properties screen

    Tap image for info; Tap here for large

    The "Properties" segment is where you set how Wotja displays text and whether the background is a solid color./images/screensaver/visualizer etc.


AMenu Bar

Menu Buttons: 1,5,6 and 3.

BToolbar

Toolbar Buttons: 2,4.

1Save/Exit Button

Displays the Save Changes Menu pop-up before exiting to the Documents screen. For the menu items see the Music > 1Save/Exit button.

2Show Button

Shows the screen with the current Display Property settings.

3Screen Title

Displays the name of the screen. This is "Display" as there is only one screen in Display Mode.

4Display Properties Button

The Display Properties screen is where you can easily set the Display Properties that define how a Mix will display when played (whether in a Flow, Album, Playlist or Mix).

Tip: If you want to export an imageless (i.e. small) wotja to clipboard for embedding in a webpage, then from the Action menu select "Export Mix to Clipboard".

5Action Button

Popup Action menu:

  • Full Screen [mobile] / Full Window [desktop]
    • Displays Wotja full screen on your device and the mix (if playing) continues to play. At any time tap the screen to leave full screen display and return to Display mode.
  • Full Screen with Camera Background (iOS/Windows)
    • Tip: See the Video Feed Tutorial (48 seconds in).
    • Displays your device Camera feed in a Window on top of Wotja (which may restart play on going into this mode).
    • At any time tap the screen to return to Full Screen Display mode.
    • For a composite live generative music and video feed use iOS Control Center / a relevant 3rd party app to screen mirror to a TV.
      • Perfect for use as a big screen audio-visual experience e.g. installations, nature video feeds etc.
  • Full Screen & Restart/Stop (for videos) [mobile] / Full Window & Restart/Stop (for videos) [desktop]
    • Wotja displays full screen on your device and the mix (if playing) is stopped and then restarted after 2 seconds, making it easier to find a start point in a screen video recording. At any time tap the screen to leave full screen display and return to Display mode. Alternatively, use the Record Seconds or Bars setting to have the mix auto-stop when that value is reached and then have Wotja wait 2 seconds before returning to Display mode.
      • macOS Desktop version: The Wotja window title bar is hidden and a content area sized to e.g. 640x480 pixels is positioned top left of the screen below the App title bar. The available content area sizes are the same as those listed in the Titlebar > Window menu.
  • Export Mix to Clipboard
    • Exports the Mix to the clipboard (without background image).
  • Export Mix with Image
    • Exports a Mix from the clipboard with to include any background image.
  • Help & More
    • Takes you to the relevant section of the User Guide.
6Settings Button

Takes you to the Wotja Settings screen.

7Screen Background

This displays either a solid color., a screensaver or a background image depending on what has been selected in the Background Image/Screensaver properties.

8Screen Text Area

The text area can display either Cut-up, TTM text or no text at all. See the settings in the Text Display Mode property.

9Wotja Watermark

This is where the Watermark displays if the Settings > General > Show Watermark toggle is on.

10Display Mode Tab

The Display Mode is accessed via this Tab Bar button.

Display Properties

  • Text Color
    • Default Value: White/black as set by the palette selected in the currently selected Randomization Preset
    • Values: Any RGB/HSB [set manually]
    • Selecting the menu item displays a pop-up color wheel where you can set the text color. (RGB or HSB).
  • Text Display Mode
    • Default Value: Uses value in the currently selected Randomization Preset
    • Values:
      • Show Cut-Up Text
        • If there is any Cut-up Text used in the mix then show it on screen. This text is also used in the icon thumbnail in the Documents screen.
      • Show TTM Text
        • If there is any TTM Text used in the mix then show it on screen. This text is also used in the icon thumbnail in the Documents screen.
      • Hide All (Use Cut-up Text for Speech)
        • Hide all text but still use Cut-up for Text to Speech.
      • Hide All (Use TTM Text for Speech)
        • Hide all text but still use TTM Text for Text to Speech.
  • Background Image/Screensaver
    • The ordering below reflects that of the graphics layer stacking order (i.e. the order in which graphic elements are composited), the top most graphics layer setting (i.e. text settings) being at the top of the list and the bottom graphics layer (i.e. background color) being at the bottom.
    • Important: It may be a bit confusing, but for now there one data field for the "background image" and it can contain either a bitmap image (e.g. photo), the settings for a screensaver or a SVG (with/without transparency). If you select one it replaces the data for whatever was previously being used. Likewise, if you use Clear (below) you remove whatever data is in that field.
    • Browse Images
      • Values: User selected [set manually]
      • Select a bitmap image or SVG using Finder/Explorer/Files.
      • See the Tutorials and the Included Album Calm or Relax for an example of use of an SVG with transparency.
    • Select SVG (iOS only)
      • Values: User selected [set manually]
      • Select an SVG from any that are available in the Wotja iCloud Folder and use that as the background image for your mix.
      • SVG images can include transparency/opacity in which case a Visualizer and/or Background color below it can also been seen.
      • See the Tutorials and the Included Album Calm or Relax for an example of use of an SVG with transparency.
    • Select Palette
      • Default Value: Uses value in the currently selected Randomization Preset; see also Random Screensaver below
      • Values: Included palettes (below); Random (only in RP; means select a palette at random)
      • The Screensaver Palette determines the colors available for use by the screensaver which can be seen in Flow Mode, Play Screen and Full Screen. It can also be seen in Display Mode, but in that you can use the Background images/screensaver menu item to override it either with an image or clear it so you can instead use a background color.
      • Palettes have an opacity setting of about 25% which allows the lower layer background color to also have an affect.
      • When creating an auto mix or creating mixes for an auto box the values of the Screensaver Palette are used for the mix file's auto-generated thumbnail (unless you have chosen an image or background color, see Browse Images and SVG above).
      • There are 35 palettes included, see below:

        Awesome listen   lighttext  
        - - - - - -
        Been painting   lighttext  
        - - - - - -
        Black gold   lighttext  
        - - - - - -
        Bold space   lighttext  
        - - - - - -
        Breathe slow   lighttext  
        - - - - - -
        Citrus zest   darktext  
        - - - - - -
        Comforting cotton   darktext  
        - - - - - -
        Deck chair   lighttext  
        - - - - - -
        Deep thought   lighttext  
        - - - - - -
        Drifting upbeat   lighttext  
        - - - - - -
        Flow Go   lighttext  
        - - - - - -
        Flutter words   lighttext  
        - - - - - -
        From imagination   lighttext  
        - - - - - -
        Hedge row   lighttext  
        - - - - - -
        Ideal discover   lighttext  
        - - - - - -
        Incredible relation   lighttext  
        - - - - - -
        Inventing decision   lighttext  
        - - - - - -
        Lilt dimension   darktext  
        - - - - - -
        Look light   darktext  
        - - - - - -
        Love heart   lighttext  
        - - - - - -
        Mono chrome   lighttext  
        - - - - - -
        Noodle safe   lighttext  
        - - - - - -
        Ocean travel   lighttext  
        - - - - - -
        Pastel healing   lighttext  
        - - - - - -
        Pebble vision   lighttext  
        - - - - - -
        Rainbow 12 (1-6)   lighttext  
        - - - - - -
        Rainbow 12 (7-12)   lighttext  
        - - - - - -
        Rainbow 6 cool   lighttext  
        - - - - - -
        Rainbow 6 warm   lighttext  
        - - - - - -
        Random hand   lighttext  
        - - - - - -
        Reflecting time   lighttext  
        - - - - - -
        Sun flower   lighttext  
        - - - - - -
        Teal leaves   lighttext  
        - - - - - -
        That filter   lighttext  
        - - - - - -
        Value union   lighttext  
        - - - - - -
        Vibrant feeling   lighttext  
        - - - - - -
        Wander happiness   lighttext  
        - - - - - -
        Why incredible   lighttext  
        - - - - - -
        Winter scene   lighttext  
        - - - - - -
        Wood finish   lighttext  
        - - - - - -
    • Random Screensaver
      • Default Value: Uses value in the currently selected Randomization Preset
      • Values: None/Blobs/Geometric [style]
      • For an example of the screensaver see the Video Feed Tutorial.
      • Important: If you select this menu option, be aware this it replaces replaces whatever "background image" is currently in use, be that a screensaver, bitmap image or SVG, and it will use the "style" as set in the Randomization Preset.
    • Clear
      • Removes any image, screensaver or visualizer data associated with the mix (but not the palette data).
  • Image Autopan
    • Values: Enabled/Disabled [set manually]
    • If one has been added to the mix, this allows auto-panning of any background bitmap image.
  • Visualizer
    • Default Value: Uses value in the currently selected Randomization Preset
    • Values: None; Lattice; Vortex
      Wotja Visualizer - Lattice
      Wotja Visualizer - Lattice
    • The visualizers use the palette defined above.
    • They are "music sensitive" in that notes generated by the WME do affect them, but not in a direct linear (note-by-note) fashion.
    • For an example of the Lattice visualizer see the Video Feed Tutorial.
  • Background Color
    • Default Value: Black
    • Values: Any RGB or HSB value [set manually]
    • Selecting this menu item displays a pop-up color wheel where you can set the text color. (RGB or HSB).

Plug-in Hosting

Menu Bar Save/Exit Button Plug-in Scanner Button File Tab Plug-in Chain Active Indicator Plug-in Chain Selector Screen Title Plug-in Chain Header Master Plug-in Chain Action Button Settings Button Wotja Track Filter Control MIDI Filter Control Plug-in Icon Chain Slot Selector Chain Volume Level Control Plug-ins Tab Chain Bypass Toggle Chain Slot Menu

(tap circle for info, hover for tooltip; tap image for large)

Documents > 14Mix File > 15Plug-ins Tab

Hosted Plug-ins
  • The Wotja App [but not Plug-in] supports Plug-in Hosting (iOS, macOS, Windows variants).
  • Plug-ins are "external" to the main Wotja App and can be in AUv3 format (iOS 14+, macOS 10.15+) or VST3 format (Windows 10/11) - see Requirements.
  • 5 "Chains" of Plug-in Instruments / FX are supported and each Chain has 4 "Slots".
  • The first "Slot" in a Chain is for the "Instrument" Plug-in, be this the "Wotja Output" 'Instrument', or a 3rd party Instrument Plug-in. The other 3 slots are for FX Plug-ins.
  • By default, the "Wotja Output" 'Instrument' uses output from the Mix FX (i.e. for ALL Wotja Tracks). Use the Wotja Track Filter to specify only those tracks that you want to process in the Chain. This can also be used in conjunction with the MIDI Event Filter below.
  • The Instrument Plug-in you select gets its MIDI data from all MIDI data delivered by all Wotja tracks. Use the MIDI Event Filter to filter what MIDI is to be used, e.g. only MIDI channel 2 from e.g. only Wotja Track 4.
  • The 6th Chain is an optional "Master FX Chain", where you can have zero, 1 or more FX that are applied the summed output of all Instrument chains.
  • If you have 2 or more Chains set-up, then simply adjust the relative outputs from the two chains using the Sliders at the bottom of the chain - they're all added together.
  • Plug-ins are applied as a 'post process' to all the other work that Wotja does, so your Mix still stands alone and works even without those Plug-ins present
  • Recordings made via the Recording tab also capture the output from Plug-ins (i.e. the Recording should be what you hear).
  • Mixes that reference Plug-ins should play as expected in albums and playlists - provided of course that the relevant Plug-in is available to Wotja on your device!
Usage

AMenu Bar

The Menu Bar contains the 1Save/Exit Button, 2Plug-in Scanner Button, 9Actions and 10Settings buttons.

1Save/Exit Button

Displays the Save Changes Menu pop-up before exiting to the Documents screen. For the menu items see the Music > 1Save/Exit button.

2Plug-in Scanner Button

Tap this at any time to show the Plug-in scanner screen, below:

Wotja Mix Plug-ins Scanner

Plug-in Scanner Screen
Tip: The "Blocked plug-ins" list is shown in red at the bottom of the above list.
(tap image for large)

  • Back Button
    • Tap to return to where you came from.
  • Scan Button
    • Tap for the "Scan for Hosted Plug-ins?" pop-up.
        Wotja Mix Plug-ins Start Scan popup

        Plug-in Scanner "Scan for Hosted Plug-ins?" popup
        (tap image for large)

        Wotja Mix Plug-ins Scanner Failed sandboxSafe

        macOS: Failed Validation (Sandbox Safe) pop-up
        (tap image for large)

      • When the scan is underway the Plug-in Scanner "Screen Title" area changes to show which Plug-in is currently being scanned.
      • When completed you will see the list of available Plug-ins, alphabetically sorted on manufacturer name, and below that (shown in red) a "Blocked Plug-ins" list of any Plug-ins that have failed validation or that you have Blocked using the Block button below.
      • macOS: A pop-up menu (see above image) lists any Plug-ins that have failed because they are not "Sandbox Safe". To notify a Plug-in developer of this issue, use your mouse to select the name of the failed Plug-in and copy it to the Clipboard. Then, for next steps, see this FAQ: What is a "Sandbox Safe" Audio Unit Plug-in on macOS?.
  • Block Button
    • Tap for the "Select Plug-ins to Scan / Block" Screen.
    • Wotja Mix Plug-ins Scanner

      Select Plug-ins to Scan / Block Screen
      Tip: The "Blocked plug-ins" list is shown in red at the bottom of the above list.
      (tap image for large)

    • Plug-ins that fail to scan are put in the Block list automatically; this will happen even if Wotja crashes while scanning.
    • If a Plug-in crashes a little bit later we cannot catch this automatically. If this happens, you need to block what you think is the crashing plug-in manually:
      • Restart Wotja, move the plug-in to the "Block" list, and try another scan.
      • Repeat until you've found the problem plug-in.
    • To manually block a Plug-in, tap its right side Actions button and select "Block Plug-in".
    • To unblock a Plug-in, in the "Blocked Plug-ins" section at the bottom (blocked Plug-ins are shown in red) tap its right side Actions button and select "Unblock Plug-in".
    • Blocked Plug-ins are not scanned.
  • Actions Menu Button
    • Re-Scan Plug-ins.
    • Reset Blocked Plug-ins list, and Re-scan.
  • Settings
  • Plug-in List
    • Plug-ins
      • This shows the names of all the Plug-ins that have been scanned and passed validation.
      • These are the Plug-ins available for you to use in Wotja.
    • Blocked Plug-ins
      • Shown below the above, this displays in red the names of any Plug-ins that have failed validation and that are thus not available to use, or that you Blocked using the Block button above.
        • macOS note: The pop-up Failed Sandbox Safe message above shows only after completing a scan, and then lists only those Plug-ins that are not marked as Sandbox Safe (and which cannot thus be used in Wotja).
3File Tab Button

Only shown in Desktop version, File tab buttons allow for a number of files to be open at the same time.

4Plug-in Chain Active Indicator

This indicator displays green for any "Chain" that uses one more Plug-ins.

5Plug-in Chain Selector

Tap any Chain selector to scroll that Chain to the top and underline that Chain number.

6Screen Title

Displays the name of the screen.

7Plug-in Chain Header

Shows the Chain number, i.e. "Plug-in Chain #1" or "Plug-in Chain #2".

8Master Plug-in Chain

Chain #6 is a Master FX chain. It allows you to apply, as relevant, AUv3/VST3 FX to the summed outputs of all the other Chains you have set up.

It can use zero, 1 or more FX Plug-ins.

9Actions Button
  • Re-Scan Plug-ins
  • Reset Blocked Plug-ins list, and Re-scan
10Settings Button

Takes you to the Settings screen.

11Chain: Wotja Track Filter Control

The "Chain: Wotja Track Filter" allows you to select only certain Wotja Tracks for use with the Plug-in Chain.

It displays slightly differently depending on whether the Instrument in the Chain is "Wotja Output" (A) or a 3rd Party Plug-in (B).

Use the Action menu in the Wotja Track Filter to easily select/deselect all.

Wotja Mix Plug-ins Scanner Failed sandboxSafe

Chain: Wotja Track Filter (A)
(tap image for large)

Wotja Mix Plug-ins Scanner Failed sandboxSafe

Chain: Wotja Track Filter (B)
(tap image for large)

12Chain: MIDI Event Filter Control

The "Chain: MIDI Event Filter" will only show if you have selected a 3rd Party Instrument Plug-in (it does not show if the Instrument is "Wotja Output").

It allows you filter the MIDI going from Wotja to your 3rd Party Instrument Plug-in by both Wotja Track and/or by MIDI Channel.

Wotja Mix Plug-ins Scanner Failed sandboxSafe

MIDI: Wotja Track Filter
(tap image for large)

Wotja Mix Plug-ins Scanner Failed sandboxSafe

MIDI: MIDI Channel Filter
(tap image for large)

13Plug-in Icon

Shows the icon for the Plug-in (where it is available to Wotja).

14Chain Slot Selector

There are FOUR Chain Slots and tapping the Selector displays the following pop-up menu (only displays if the chain is empty, otherwise tap the Chain Item Menu button:

  • Browse Plug-ins
    • Shows the Available Plug-ins list - you must have first scanned for Plug-ins! See the Plug-in Scanner button.
    • FIRST Chain Slot: Select either
      • "Wotja 22 WAE Built-in" > Wotja Output to use audio from the Wotja Audio Engine.
      • A 3rd Party Instrument Plug-in.
    • OTHER THREE Chain Slots: Choose any 3rd party FX Plug-in from the Plug-in list.
  • Export Slot (Pro)
    • Lets you export the slot settings to the Clipboard, perhaps to import into another slot.
  • Import Slot (Pro)
    • Lets you import into the slot any slot settings on the clipboard.
  • Third Party Plug-ins
15Chain Volume Level Control

Adjust this for each Chain to set the desired output volume for each Chain.

16Plug-ins Tab

Tap to select this Hosted Plug-ins screen.

17Chain Bypass Toggle

Allows you to quickly toggle on/off the output from a Chain. This lets you isolate a Chain so you can focus on each one in turn.

IMPORTANT: If ALL chains are bypassed then you will not hear anything coming from Wotja.

18Chain Slot Menu

Shows the relevant pop-up menu for each Chain Slot.

  • Show
    • Shows the Plug-in UI (this can be embedded or in a window dependent on this System Setting:).
  • Bypass?
    • The Chain "Audio" Bypass can be toggled on or off.
  • Delete
    • Delete the Plug-in from the Slot.
  • Replace (Delete and Browse)
    • Replace the Plug-in in the slot with another one.
  • Export Slot (Pro)
    • Lets you export the slot settings to the Clipboard, perhaps to import into another slot.
  • Import Slot (Pro)
    • Lets you import into the slot any slot settings on the clipboard.
  • Third Party Plug-ins

Mix Recording

Menu Bar Toolbar Bottom Toolbar Save/Exit Button Recording Format Selector Screen Title / Recording Progress Action Button Settings Button Recording Time Recording Item Button Recording Progress Indicator Record Button Record Mode Tab Recording Units Toggle Recordings List Recording Manage Button

(tap circle for info, hover for tooltip; tap image for large)

Documents > 14Mix File > Mix Edit Modes > 10Record Tab

Tutorials
Record Mode
  • Although not strictly an "Editing Mode" as there is no actual editing that goes on in it, this screen is where you can create ('Pro' Feature Set required) and preview WAV and MIDI "mixdown" recordings (selected via the 2Recording Format Selector).
  • Tip: Recordings are all saved to the "Wotja Folder", the location of which depends on the OS and/or whether iCloud is enabled for Wotja.
  • MIDI Recording Tip: To specify grouping by MIDI Track, or MIDI Channel, see Settings > Audio MIDI+ > MIDI File Track Grouping.
  • Notes:
    • Recordings you make are saved to the Wotja iCloud folder or Wotja folder depending on the "Use iCloud" setting (iOS > Settings > Wotja > Use iCloud).
    • Mixdown recordings are not live recordings and they are made as fast as your device allows. To be made they require sufficient device memory to be available.
    • When a recording is made it is held in memory before Wotja flushes it to the file system.
    • Bytes per second = 48000 x 2 x 2 =192,000. 100 bars of 4:4 at 60 bpm is 400 seconds of recording (just over 6 minutes). In terms of bytes this is 192000 * 400 = 77 MB. At 30 bpm, that is 154 MB.
    • For every 100 MB recording, you need to have space in the file system. 10 recordings will be 1 GB.
    • If you're using iCloud, e.g. 10 files totaling 1 GB, remember that those files are synced with the cloud.
    • MIDI File Type: MIDI file recordings are saved as Type 1 files. The "MIDI File Track Grouping" option in Settings determines how MIDI is saved. Basically, it allows you to group MIDI File recordings into Tracks by Wotja Track or by MIDI Channel ( default) and where each MIDI File Track is labeled by Wotja Track Number or MIDI Channel Number as appropriate.
    • Ramp in/out: For audio/video recordings you can set the music Ramp in and Ramp down times (from 0 - 20 seconds) in the Mix section of the Cell & Mix Rules panel.
    • Sharing recordings: Use the following apps to locate and then export/share a mixdown recording:
      • iOS: iCloud enabled - Use the Apple Files app (See also this FAQ)
      • iOS: iCloud not enabled - From the Wotja Mixdown & Recordings screen > Actions button > Open With... and try sharing via the options presented there; alternatively use App File Sharing (See also this FAQ)
      • macOS: Finder
      • Windows: Explorer
      • Android: Files app (or other File Manager app); Once you have selected the file(s) you want to export/share (e.g. recordings), use the Share Menu in the Files app to do what you want (alternatively use USB to copy files off your device)
Usage
  • Select your desired recording format: 2Recording Format Selector.
  • Start the mixdown: Tap the 9Record Button in the bottom toolbar.
  • Recording progress: The 3Title Bar will show the recording progress (e.g. 7% - 3.34 Mb) and in the middle of the screen a pop-up 8Recording Progress Indicator will display whilst the recording is being made (e.g 7%).
  • Recording complete: The popup will disappear and you will see your recording show up in the 12Recordings List (if you are using iCloud it might take some time depending on how long your recording is).
  • 7Preview recording: Audio/MIDI recording: Tap the Recording Item you want to play/stop, or use the 13Recording Action Button and select Open With.

AMenu Bar

The Menu Bar contains the 1Exit/Save, 4Action and 5Settings button and the 3Screen Title/Recording Progress indicator.

BToolbar

The Toolbar contains the 2Recording Format selector.

CBottom Toolbar

The Bottom Toolbar contains the 9Mix Record button and 11Mix Record Units toggle.

1Exit/Save Button

Displays the Save Changes Menu pop-up before exiting to the Documents screen. For the menu items see the Music > 1Save/Exit button.

2Recording Format Selector

Select the mixdown recording format: WAV or MIDI (Pro Feature Set).

The supported mixdown recording formats are:

  • WAV
    • 48Khz/44Khz (hardware dependent) Stereo WAV file
  • MIDI
    • Type 1 MIDI file
3Screen Title / Recording Progress

When a recording is being made the screen title (normally "Record") will change to indicate the progress of the mixdown.

4Actions Button
  • Refresh
    • When you are using iCloud it can take time for a recording to sync with it. Select this menu item to update the recordings list.
  • Help - User Guide
5Settings Button

Takes you to the Settings screen.

6Recording Time

Dependent on the setting of the 11Record Units Toggle, you use this slider control to set the number of bars or seconds you want to record (up to 100 bars or 600 seconds maximum by default, but extendable via the Max Bars/Max Settings slider control in the mix segment of Settings).

Tip: To change the bars value either tap the "-" or "+" buttons, drag your finger along the slider or double tap it for a pop up to manually enter a value.

7Recording Item Button

The recording item uses an icon to indicate the file type and the description shows the name, bars, tempo and date/time.

Tap an audio (grey icon) or MIDI (black icon) recording to preview it/stop it being previewed. When it is playing the item selector will have a light green tint.

When previewing MIDI recordings these play only with a default GM MIDI Wavetable; MIDI is also sent out at the same time.

Note: When a recording is being made, or previewed, any playing mix will stop playing.

8Recording Progress Indicator

Shows the % progress of the mixdown recording, e.g. 7% done.

9Record Button

Tap this to start a recording. Once a recording is being made it changes to "Stop". You can press that to stop the recording being made.

As the recording is being made you will see the recording progress is displayed at the top of the screen instead of the screen title.

Note: MIDI is not sent out when MIDI recordings are being made.

10Record Mode Tab

The Record Mode is accessed via this Tab Bar button.

Note: In the AUv3 Plug-in this button is replaced with a Settings button.

11Recording Units Toggle

Choose between Seconds (toggle is on) or Bars (toggle is off).

12Recordings List

Displays the list of mixdown recordings you have made.

13Recording Manage Button

Tap this button shown to the right of the recording to present a pop-up action sheet with the following options:

  • Show in Finder/Explorer (Desktop)
    • Opens a window with the file selected.
  • Open With... (iOS only)
    • Opens an action sheet where you can choose how to export/share your recording to e.g. to iCloud Drive, Facebook, Dropbox etc. depending on what you have installed. See also this FAQ.
  • Delete
    • In Wotja this is how you delete your recording.

Settings: Overview

Back Button Randomization Preset Select Button Randomization Preset Name Button Version Number Group Header Screen Selector Store button Help Button Info Button Randomization Preset Save Button

(tap circle for info, hover for tooltip; tap image for large)

Documents > Settings (Settings button is found in many screens)

System Settings are not saved to mixes and each configures a different aspect of the Wotja System.

Tutorials
System Settings
  • General Wotja Settings General screen

    Tap image for info; Tap here for large

    This is where you set User Interface related things such as UI mode (Light or Dark) and plug-in UI display, Text Display, Display Language etc.

    Audio MIDI+ Wotja Settings Audio MIDI+ screen

    Tap image for info; Tap here for large

    This where you set how you want Wotja to play its sounds, how it is used with Audiobus / Inter-app Audio / Ableton Live [all iOS only], MIDI Out/In and screen sizes for video recordings etc.

    Randomization Presets Wotja Settings Randomization Presets screen

    Tap image for info; Tap here for large

    This screen is where with a Pro Feature Set you can select the Randomization Preset you wish to use as well as being able to edit any of the settings in it.

What is a Randomization Preset (RP)?
  • All the settings in the currently selected Randomization Preset can be edited in the Randomization Presets screen, selected via the Settings Screen Selector.
  • A Randomization Preset is a collection of settings that can be used for Randomization. There are over 40 different settings described below included in each one. These range from Template selections (including ones you have made), Sound & FX preset selections (again including ones you have made) right through to Cut-up rules and the number of cells/tracks in an auto mix. Each Scheme can have completely different settings, too, meaning they can be configured exactly as you want - whether you want to change just one setting or all of them is up to you.
  • Randomization can be used in a number of places in Wotja and the randomization parameters in a Randomization Preset determine how it is used. Examples of this are how the mixes in Flow and Automatic albums ('Boxes') are created and whether e.g. text is displayed on screen in Flow mode and/or the Playlist Player Fullscreen mode. They are also used to determine how mix Cells are populated with templates when using the Random function in Wotja, how TTM Generator text randomization is applied to mixes and how Cut-up is generated in the Text Editor screen - plus a lot more, too.
  • Select/Delete a Randomization Preset:
  • Save a Randomization Preset:
    • Tap the 10Randomization Preset Save button for a pop-up menu where you can save changes to the current Randomization Preset or to save as another one (i.e. create your own!).

AMenu Bar

Includes buttons for 1Back, 7 Store, 8 Help and 9 Info.

BScreens

There are three different Settings screens: General, Audio MIDI+ and Randomization Presets.

Select the screen you want with the 6Screen Selector.

CSettings Toolbar

This toolbar is only shown in the Randomization Presets Screen. It contains the following Toolbar Buttons: 2,4,7.

1Back Button

Tap to return to whatever screen you originally entered Settings from (e.g. Documents, or Music/Text/Display/Plug-ins/Recordings etc.).

2Randomization Preset Select Button
Cell Properties

Randomization Preset List
(tap image for large)

Does the same as the Randomization Preset Name Button3, namely it lets you select a Randomization Preset from the Randomization Preset List screen (which also lets you delete a Randomization Preset, using the Delete button).

3Randomization Preset Name Button

Shows the name of the current Randomization Preset but otherwise does the same as the Randomization Preset Select Button2, namely it lets you select a Randomization Preset from the Randomization Preset List screen (which also lets you delete a Randomization Preset).

4Screen Title

Displays the name of the screen and the version number for this version of the software.

5Group Header

Related Settings are grouped together. The Group Header shows the name of the group.

6Screen Selector

Lets you select one of the 3 Settings screens: General, Audio MIDI+ and Randomization Presets.

7Store Button

When tapped on, the Store button takes you to the In-App Store (or to a Store info page in the Plug-in).

In the free variants of Wotja, 'Lite+' mode is unlocked just by visiting the In-App Store!

Note: In the free variants of Wotja the Store button also displays the Feature Set (FS) indicator5 when it is in 'Lite' or 'Lite+' mode.

8Help Button
9Info Button

The Info button shows the About Wotja screen. These details are also on the Wotja webpage here.

The About screen has a button at the bottom which lets you visit a page on our website to check what the latest version is.

10Randomization Preset Save Button

Use this button to save changes to your Randomization Preset or to save as a new Randomization Preset (Pro Feature Set only).

Settings: General

Timer

  • Sleep Timer
    • Off; 1 min to 8 hours (Default value - Off)
    • The sleep timer can take values from 1 minute to 8 hours. Use it to set how long you want to Wotja to play before fading out over the last few seconds of play time. Wotja will stop playing and restart whenever you change the value of the Sleep Timer, with the new Sleep Timer setting then being operational.
    • When the Sleep Timer is operational the Play button in the Mix Player will show the time counting down to show how long the mix has left to play.
    • If you are running in 'Lite Mode' then Wotja will always stop playing after 5 minutes whatever the value of the timer.
    • If the Sleep Timer is off then it means there is no sleep timer active. The only timer that might then be in operation is the auto-timeout in Lite Mode.

User Interface

  • Color. Scheme
    • Light/Dark (Default value - Light)
    • Lets you choose whether you want the app to use a Light or Dark scheme to suit your preference. Select the Light or Dark option to change theme - it is that simple!
    • This User Guide uses the Light scheme.
  • Auto Play on File Open
    • Enabled/Disabled (Default value - Enabled)
    • When enabled, this setting means that when you open any file (or select a Flow) it will:
      • Start to play
        • Note: If Wotja Mix Mode was last closed in Display Mode then if a mix is opened it will play full screen.
    • Tip: Disable the toggle if you do not want Wotja to go Full Screen when opening a file (it won't then autoplay though).
  • Embedded Host Plug-in UIs
    • On/Off (Default value - Apple: On; Windows: Off)
    • Note: In Wotja for Windows, the embedded option is experimental.
    • When set to "On", the Plug-in UI is shown in the Plug-in Hosting screen window. If the Plug-in has been created to have a resizable UI (i.e. responsive design), then it should resize nicely to fit in this window.
    • When set to "Off", the Plug-in UI is shown in its own window, this being of particular use in desktop versions or if you are having problems with the embedded option.
  • Show Play Screen Top Panel
    • Enabled/Disabled (Default value - Enabled)
    • This setting determines whether the top toolbar background panel in Play Screen mode in the Flow/Box/Album Player is visible or hidden.
    • Note: If you are in Full Screen display (see the Action menu in each mode) then whatever the setting of this toggle the toolbar is hidden.
  • Templates: Auto-change Patterns
    • Enabled/Disabled (Default value - Enabled)
    • This is a very important setting and unless you have a specific requirement we strongly recommend that you leave it enabled. When enabled it means that when creating an auto-mix or adding a Template to a mix all B/F (melodic) patterns in use by a Generator Type "Pattern" are randomized, AND, all other patterns that might be in the Template are set to <100 B 240 1>. This is a default pattern and it is a way of clearing out any "junk DNA" patterns that might be in the Template and that you might end up using inadvertently. If you disable this toggle then no melodic patterns are randomized and no other patterns are overwritten when creating an auto-mix or adding a Template to a mix - it is for a very specialist use case where you are using your own patterns.
  • Hide Watermark
    • Enabled/Disabled (Default value - Enabled)
    • When enabled the stylish Wotja watermark will be overlaid at the bottom of the Display mode screen or an Full Screen mode. Disable it to prevent the watermark from displaying.
    • Note: This is a Pro tier feature (see Feature Sets).
  • Help: In-App (uncheck for Online Help)
    • Enabled/Disabled (Default value - Enabled)
    • Enabled: In-app versions of documentation are used when "Help - Resources" or "Help - Guide" are selected from the Actions menu.
    • Disabled: Online documentation is used instead - use our website Translate option to see them in your own language.
  • Synth & FX Editor: Show Meter/Scope
    • Enabled/Disabled (Default value - Enabled)
    • To make sound design easier the Synth & FX Editor has two visual displays ("inspectors"), these being a meter for audio-rate units/junctions and an oscilloscope for control-rate units/junctions; Show or hide these inspectors with this toggle.

Text Display

  • Duration
    • 0-4000ms (Default value - 4000)
    • Sets how long (milliseconds) text will display for in the Display screen and in fullscreen in the Playlist player.
  • Duration Range
    • 0-4000ms (Default value - 0)
    • Sets the range (milliseconds) that can be applied to Duration.
  • Fade In
    • 0-4000ms (Default value - 4000)
    • Sets how long (milliseconds) it takes for text to fade in.
  • Fade Out
    • 0-4000ms (Default value - 4000)
    • Sets how long (milliseconds) it takes for text to fade out.

Help & More

  • Help & Documentation
    • Web link to this User Guide.
  • Video Tutorials
  • Give us Feedback
  • Privacy Policy
  • Website Terms of Service
  • End User License Agreement
    • Web link to our EULA.
  • About
  • Display Language
    • A setting saved across sessions that lets you manually select the language used in the Wotja UI (should you not wish to use your devices's System setting):
      • System (default) - what your device is set to
      • English
      • Chinese (simplified)
      • Japanese
  • Cancel (iOS/ Android)
    • Cancel the pop-up menu.

Settings: Audio MIDI Video

Flow & Randomization Preset Override

  • Mix FX Override
    • On/Preset/Custom (Default value - Off)
    • The Mix FX Override setting allows you to override the Mix FX that is applied in a Randomization Preset (i.e. when playing Flows or when creating auto-mixes/boxes).
    • It provides a quick and very easy way to use the kind of Mix FX YOU want for any Flow or a new auto-mix.
    • The preset options are from the included FX Presets and are as follows:
      • Off
      • (CPU-) Mix FX - Combi Chorus Delay Reverb
      • Ambience - Big reverb hard edge (R1)
      • Ambience - Big reverb chorus input pan (R1)
      • (CPU+) Ambience - Big reverb space (R2XL) [for device with faster CPU]
      • (CPU++) Ambience - Shimmer dual (R2XL) [for device with even faster CPU]
      • Custom...
        • This option is selectable only in the Pro Feature Set.
        • When selected it takes you to the FX Presets screen where you can select ANY included FX preset or ANY saved FX preset (i.e. one of your own).
        • Tip: If you want no Mix FX to be applied at all (perhaps you want instead to apply 3rd party FX in a DAW or AUv3 Host), select the "App" > "- Amp default" FX preset.

Audio Output

  • Output Device
    • Desktop App Setting (macOS/Windows; not in AUv3 Plug-in): Select the Output audio device to be targeted by Wotja's internal sound generator (the WAE Synth) from the list of available detected options e.g. 'Built-In Output' on macOS and 'Speakers' / 'Primary Sound Driver' for Windows.
    • Wotja 22 allows dynamic change of the audio output device with no Wotja restart required (but it can take a few seconds for it to be applied). See macOS note below, and also this FAQ.
      • Note 1 (macOS): If your Mac is outputting to an AirPlay device and you change it to another one you may need to restart Wotja for it to be able to see this new device.
  • WAE for Sounds & FX
    • On/Off (Default value - On)
    • IMPORTANT: This must be ON to use Wotja as a Plug-in Host.
    • Enables WAE sounds, which all Generators use as this is the sound generator for Wotja. Turn this to off when you want to play through an external synth(s) and you do not want to hear the WAE sounds as well. NOTE: When this is set to OFF you will not hear anything from Wotja unless you have a MIDI device connected (and you will hear sounds through that instead).
    • Inter-App Audio / Audiobus (iOS only; on by default): For Wotja to work correctly with an Inter-App Audio/Audiobus enabled app (i.e. without artefacts) then:
      1. The Wotja Audio Sample Rate MUST have the same value as the Sample Rate in those apps.
      2. The Audio Block Size MUST have the same value as the Buffer Size (samples) / Latency Control (frames) in those apps [different apps refer to the same thing in different ways]. We recommend that this value is 1024.
      3. If you getting noises/glitches/buzzing etc. see this video.
  • WAE Volume
    • 0-127 (Default value - 100)
    • Global volume control over all sound generated by the WAE.
    • Useful if want tracks to send MIDI but not to hear them, or hear them at a lower volume.
  • Audio Sample Rate
    • Note: Setting not available in the Wotja AUv3 Plug-in as that uses the settings of the AUv3 Host.
    • 48 kHz or 44 kHz (Default values - auto selected depending on device capabilities [iOS, macOS, Windows]; 22Khz [Android])
    • iOS: If you experience noise with Wotja in AudioBus, consider changing the sample rate between 48000 and 44100 Hz. If, after changing sample rate, you get occasional audio break-up, consider experimenting with the Audio Latency value, below.
    • Wotja 22 allows dynamic change of the audio output device with no Wotja restart required (but it can take a few seconds for it to be applied). See also this FAQ.
  • Audio Block Size (iOS, Android)
    • Note: Setting not available in the Wotja AUv3 Plug-in as that uses the settings of the AUv3 Host.
    • 256-2048 samples (Default values - 1024 samples [iOS]; 2048 [Android])
    • This setting is of particular use if you are using Wotja on an older device or are using it routed via Audiobus or Inter-App Audio - higher values minimize audio artifacts which also depend on device power and mix/sound/fx complexity. Used in conjunction with Audio Block Count.
    • If you are using Wotja to drive external MIDI synths you may need to tweak the values both here and for MIDI Latency. Example: You're driving an external synth via MIDI and want to sync the audio output of that with audio output from Wotja (i.e. via the WAE sounds). Try setting the Audio Block Size and Audio Block Count to be as low as you are happy with. Then, change the MIDI Latency until the output from 3rd party synth is in sync. Many dependencies are outside control of Wotja, however.
    • Wotja 22 versions allow dynamic change of the audio output device with no Wotja restart required (but it can take a few seconds for it to be applied). See also this FAQ.
  • Audio Block Count (iOS, Android)
    • Note: Setting not available in the Wotja AUv3 Plug-in as that uses the settings of the AUv3 Host.
    • 3-40 blocks (Default values - 10 [iOS]; 5 [Android])
    • This setting is of particular use if you are using Wotja on an older device or are using it routed via Audiobus or Inter-App Audio - higher values minimize audio artifacts which also depend on device power and mix/sound/fx complexity. Is the number of Audio Blocks of size determined in Audio Block Size setting.
    • If you are using Wotja to drive external MIDI synths you may need to tweak the values both here and for MIDI Latency. Example: You're driving an external synth via MIDI and want to sync the audio output of that with audio output from Wotja (i.e. via the WAE sounds). Try setting the Audio Block Size and Audio Block Count to be as low as you are happy with. Then, change the MIDI Latency until the output from 3rd party synth is in sync. Many dependencies are outside control of Wotja, however.
    • Wotja 22 versions allow dynamic change of the audio output device with no Wotja restart required (but it can take a few seconds for it to be applied). See also this FAQ.
  • Speech Synthesizer (iOS, macOS)
    • On/Off (Default value - On)
    • To hear Text to Speech (TTS) this setting must be set to "On".
    • Turn it off if you never want to hear TTS.

MIDI Output

  • Output Devices
    • User Selected (Default value - None)
    • Wotja will send-out MIDI events to whichever device you have selected in the MIDI Output Device List of detected outputs.
    • Note that 'Lite Mode' will send/receive MIDI only on Channel 1; if you want to send/receive on multiple MIDI channels then you will need to get the Pro version of Wotja (see Wotja Downloads).
    • MIDI routing on iOS
      • On iOS this is via Core MIDI. Apps that are Core MIDI enabled can take advantage of this.
      • The entry you will see will be "Network Session 1" (this is how iOS [CoreMIDI] refers to the name of the network MIDI device).
    • MIDI routing on a Mac
    • MIDI routing on Windows
      • We have found that loopMIDI is an easy to use virtual loopback MIDI cable. If you cannot seem to get MIDI Out working with your laptop Windows MIDI drivers, then give this a try!
      • Once you have installed it you may well need to restart Wotja and/or your DAW. Then, in Wotja > Settings > Mix tab select MIDI Out > Devices and ensure that loopMIDI is selected.
      • If you need a Network MIDI driver for Windows you might also wish to check out rptMIDI.
      • See also the rptMIDI tutorial.
    • MIDI routing on Android device
      • On Android devices we refer to Wotja MIDI Out as an experimental feature because we require it to be supported in the OS AND by the device manufacturer, but this is not always the case. We expect that most devices running Android 8+ should support MIDI Out in the OS, but some devices using Android 6+ may also support MIDI Out (e.g. some Samsung / Google devices). There seems to be no public list of such MIDI enabled Android devices but you can at least check that it works on your device in the free version of Wotja.
      • When it is supported it will let you control external MIDI devices via a suitable USB MIDI Interface (e.g. Roland UM-One mk2). If you just want to make MIDI file recordings on Android, see this FAQ.
      • Getting it working:
        • BEFORE loading Wotja, plug into your Android device your USB MIDI Interface (e.g. Roland UM-One mk2; we know this works as we have tried it); you will likely also need a Micro USB Male to USB Female OTG Adapter cable to be able do that.
        • Load the Wotja app, go into Wotja Settings, find the MIDI Output section and tap the "Output Devices" selector.
        • In the MIDI Output Devices screen that then displays, you should see your MIDI Interface in the MIDI Output Device List (e.g. Roland UM-ONE).
        • Tap the checkbox to the left to select it (you will see the checkbox show a green dot).
        • Create or load a Wotja mix and start it playing; you should see your MIDI Interface show that it is receiving MIDI notes.
        • You should then be all set!
  • Virtual MIDI (iOS/macOS only)
    • Note: Setting not available in the Wotja AUv3 Plug-in for iOS as it does not support Virtual MIDI.
    • On/Off (Default value - Off)
    • When enabled, causes Wotja to present a number of Virtual MIDI ports - one Omni (all channels) and 16 per-channel virtual MIDI ports - and Wotja sends MIDI events as Virtual MIDI ports over Core MIDI.
  • MIDI Clock
    • Note: Setting not available in the Wotja AUv3 Plug-in as that uses the settings of the AUv3 Host.
    • On/Off (Default value - Off)
    • When enabled, tells Wotja to send-out MIDI Clock events over Core MIDI / Omni channel.
    • Important: The iOS version can emit MIDI clock but it doesn’t support MIDI transport controls.
  • Send Patch Change Events
    • On/Off (Default value - On)
    • When enabled, tells Wotja to send-out MIDI Patch Change Events. Turn this off if you want ONLY MIDI Note Event information to be sent.
  • Send Start/Stop Events
    • Note: Setting not available in the Wotja AUv3 Plug-in as that uses the settings of the AUv3 Host.
    • On/Off (Default value - On)
    • When enabled, tells Wotja to send-out Start/Stop Events. Turn this off if you do not want them sent.
  • Send Controller Events
    • On/Off (Default value - On)
    • When enabled, tells Wotja to send-out MIDI Controller Events. Turn this off if you do not want them sent.
  • MIDI Latency
    • 0-500ms (Default value - 0ms)
    • Sets Latency (milliseconds) to apply to MIDI events sent-out to Core MIDI / Virtual MIDI by Wotja. Use to help remove jitter if using e.g. Network MIDI.
  • Tuning Mode
    • Note: Setting not available in the Wotja AUv3 Plug-in.
    • Off / C4 (60) / A4 (69) (Default value - Off)
    • Useful option for tuning external analog synths - causes all notes sent-out by Wotja to be "forced" to the specified pitch, which is either C4 (60) and A4 (69).
    • Important: This setting is ALWAYS turned off when you restart Wotja.

MIDI Input

  • Input Devices
    • Note: Setting not available in the Wotja AUv3 Plug-in as that uses the settings of the AUv3 Host.
    • User Selected (Default value - None)
    • Notes: MIDI Input is only used by Listening Generators.
    • Tap the MIDI Input Devices button to go to the MIDI Input Devices screen where you will see toggles for all MIDI Input Devices detected by Wotja.
    • Network Session (iOS/macOS)
      • Used for detecting MIDI sent via a network (e.g. from a Mac or iOS device over WiFi).
    • IAC Driver Bus (macOS) / loopMIDI port (Windows)
      • Used for detecting MIDI routed via OS system level capabilities.
    • Wotja + Tracks/Channels (iOS/macOS)
      • These allow Wotja to detect MIDI it sends out over Virtual MIDI (see below). As it is a kind of MIDI feedback it is for specialist use and unlikely you will need to use it.
    • App / MIDI Device + Channels
      • All 3rd party MIDI emitting Apps or MIDI devices that Wotja detects (e.g. Thumbjam, MIDIKeys apps, Roland UM-ONE MIDI Interface etc.) will be shown here; toggle on the ones you want Wotja to receive MIDI input from.
      • Note: Each of the apps have created virtual MIDI ports named after themselves (e.g. Thumbjam, MIDIKeys etc.). You'll only get their output (sent on those ports) into Wotja, if you enable those input ports. For Wotja to see these ports, however, you need to first load the app you want to generate MIDI, e.g. MIDIKeys or Thumbjam and then load Wotja.
      • Tip: When MIDI input triggers notes in Wotja then, as the audio will be playing in Wotja via the WAE, in Settings make sure "WAE for Sounds & FX" is toggled on, and you set the Audio Latency to be some low value. If that is set to 850ms (the default) then your notes will take about 1 second to play!
  • MIDI Transport Control
    • Note: Setting not available in the Wotja AUv3 Plug-in as that uses the settings of the AUv3 Host.
    • On/Off (Default value - Off)
    • Wotja's MIDI Input Transport Control / External Clock Sync features allow it to be able to sync to e.g. a DAW:
      • Sequencer
        • Configure your sequencer (e.g. Reaper/Logic, or whatever) to send Transport commands (MMC) and/or MIDI clock to a specific MIDI port
          • Note for iOS: You can route via Network MIDI
        • Make sure your piece in the sequencer is long enough; sequencers will stop sending clock events when they reach the end of their content, and they’ll also automatically emit a stop event.
      • Wotja
        • Activate the MIDI input port/device that you have configured your sequencer to send Transport (MMC)/Clock to (in the previous step)
        • Set tick for MIDI Transport Control
        • Set tick for External Clock Sync
        • Open a Wotja mix, press Play
        • Wotja will say "MIDI: Wait" under the play/stop button rather than elapsed time, and won’t (immediately) show tempo
        • Start your sequencer playing (e.g. Reaper/Logic):
          • Wotja will now start playing
          • The Elapsed time will now display/update
          • The calculated tempo (from the sequencer’s MIDI clock) will display (rather than the internal Wotja tempo)
    • NOTE: There is an outstanding issue that can be revealed if you sync to the incoming MIDI clock using a different tempo.
  • External Clock Sync
    • Note: Setting not available in the Wotja AUv3 Plug-in as that uses the settings of the AUv3 Host.
    • On/Off (Default value - Off)
    • See MIDI Transport Control above as the details are the same.
  • Note: Setting not available in the Wotja AUv3 Plug-in.
  • Input Devices
    • User Selected (Default value - None)
    • Support for Ableton Link is currently experimental but it should work in Wotja just like it does in other iOS app. If you find any issues then please get in touch via our Contact form and send us detailed instructions on how to reproduce them.
    • Note 1: Ableton link tempo does NOT work with Wotja boxes, albums or playlists.
    • Note 2: Wotja works accurately with Integer tempos, but does not support fractional tempos.
    • Steps:
      • Ableton Link: Toggle on to turn it on
      • In-app notifications: Toggle on to be notified when apps join or leave
      • Sync Start/Stop: Toggle on to send and listen to Start/Stop commands
      • Connected Apps: Shows how many apps are connected

Recording

  • Max Recording Seconds
    • Note: Setting not available in the Wotja AUv3 Plug-in; use the recording facilities of the AUv3 Host.
    • 4-3600s (Default value - 3000s)
    • This setting lets you increase how long you can record for in Record Mode.
    • IMPORTANT: Use with care as recordings are large and your device must have sufficient free memory available. If you try to change this value take note of the pop up message warning before you change it. Also be aware that these the recordings are stored in iCloud (if you are using that), so that could hit your bandwidth.
  • Max Recording Bars
    • Note: Setting not available in the Wotja AUv3 Plug-in; use the recording facilities of the AUv3 Host.
    • 4-3600s (Default value - 100 bars)
    • This setting lets you increase the number of bars you can use to make mixdown recordings in the Record Mode.
    • IMPORTANT: Use with care as recordings are large and your device must have sufficient free memory available. If you try to change this value take note of the pop up message warning before you change it. Also be aware that these the recordings are stored in iCloud (if you are using that), so that could hit your bandwidth.
  • MIDI File Track Grouping
    • Note: Setting not available in the Wotja AUv3 Plug-in which sends MIDI in Omni mode.
    • MIDI Channel/Wotja Track (Default value - "by MIDI Channel")
    • This option determines how MIDI is saved in a MIDI file recording and allows you to have Wotja's MIDI output summed either by Wotja MIDI Channel (default) or by Wotja Track.
    • Each MIDI track in the MIDI file recording is labeled either by MIDI Channel Number or by Wotja Track Number, as appropriate.
    • Use setting "by Wotja Track" if you want the MIDI sent from all generators in Cell 1 summed to MIDI track 1 in the MIDI file and the MIDI sent from all generators in Cell 2 summed to MIDI track 2 in the MIDI file.
    • Use setting "by MIDI Channel" if instead you want the MIDI sent on MIDI channel 1 in Cell 1 and the MIDI sent on MIDI channel 1 in Cell 2 to be summed to MIDI track 1 in the MIDI file.
    • Example: Wotja can have multiple Cells playing at the same time and all generating MIDI. Cell 1 could have say 9 generators each sending MIDI to a different MIDI channel (e.g. 1 to 9) and the same might be the case for Cell 2.
  • Video Recording Size (iOS/macOS)
    • Note: Setting not available in the Wotja AUv3 Plug-in.
    • 640x480, 960x540, 1280x720, 1920x1080 (Default value - 640x480)
    • This setting lets you set the size of the video you wish to record. The larger the size, the longer the recording will take to make.
    • Tip: Recordings featuring a background image do take a *long time* to create.

Settings: Randomization Presets

General/Mixes

  • TTM Cells/Column (min)
    • Values: 0-8
    • The minimum number of TTM Players that will be in a column, assuming you have a TTM Pak available for selection when randomizing.
    • See: Cells.
  • TTM Cells/Column (max)
    • Values: 0-8
    • The maximum number of TTM Players that will be in a column, assuming you have a TTM Pak available for selection when randomizing.
    • See: Cells.
  • TTM Words (min)
    • Values: 1-100
    • The minimum number of words that will be added to a Text to Music (TTM) Text field on creating a new random mix or in the TTM Text Editor when using the Randomize button with Randomize option selected.
    • See: Text to Music.
  • TTM Words (max)
    • Values: 1-100
    • The maximum number of words that will be added to a Text to Music (TTM) Text field on creating a new random mix or in the TTM Text Editor when using the Randomize button with Randomize option selected.
    • See: Text to Music.
  • Tracks
    • Values: 1-12
    • The number of Tracks that will have their cell contents (below) randomized (starting with Track 1).
    • See: Cell Grid Area
  • Cells
    • Values: 1-4
    • The number of Cells in the Tracks above that will have their contents repopulated from the list of available templates.
    • See: Cells Grid Area
  • Generative %
    • Values: 0-100%
    • The chance that a randomized Cell will be repopulated with a generative template.
    • See: Cells.
  • Blank Cell %
    • Values: 0-100%
    • The chance that a randomized Cell will be empty.
    • See: Cells.
  • Tempo (Min)
    • Values: 20-400 bpm
    • The minimum tempo of a new, random mix.
    • See: Mix Tempo.
  • Tempo (Max)
    • Values: 20-400 bpm
    • The maximum tempo of a new, random mix.
    • See: Mix Tempo.
  • Volume (Min)
    • Values: 1-127
    • The minimum volume of a track in a new, random mix.
    • See: Track Mixer.
  • Volume (Max)
    • Values: 1-127
    • The maximum volume of a track in a new, random mix.
    • See: Track Mixer.
  • Pan +/-
    • Values: 1-64
    • How far away from center that pan can be for a Track in a new, random mix.
    • See: Track Mixer.
  • Ramp Up
    • Values: 0-20 s
    • How long a mix takes to ramp up to its full volume.
    • See: Mix Ramp Up.
  • Ramp Down
    • Values: 0-20 s
    • How long a mix takes to ramp down to zero volume.
    • See: Mix Ramp Down.
  • Duration
  • Duration Max
  • Duration Range
  • Duration Range Max

Cells

  • Generative Bar Min
    • Values: Infinite(0)-1-100
    • The minimum base value for the number of bars a generative template will play for and to which the range value (below) is added. Special Value: If this value is set far left to ∞ then once play in a Track reaches such a cell the generative content in that cell will continue to play either for as long as the mix plays or until you manually select another cell in that Track to play.
    • See: Cell Gen Bars.
  • Generative Bar Max
    • Values: 0-100
    • The maximum base value for the above.
    • See: Cell Gen Bars.
  • Generative Bar Range
  • Cell Repeat Min
    • Values: 0-100
    • The minimum base value for the number of times a cell will repeat after it has played through once and to which the range value (below) is added. For a generative template each bar counts as one repeat; for audio or MIDI content this is the length of the content rounded up to the end of a bar). Note: If the cell contains generative content and the Generative Bar Min is value is set to ∞ then this setting takes no effect as the cell never repeats!
    • See: Cell Repeats.
  • Cell Repeat Max
    • Values: 0-100
    • The maximum base value for the above.
    • See: Cell Repeats.
  • Cell Repeat Range
    • Values: 0-100
    • Sets the range that applies to the above base value.
    • See: Cell Repeats Range.

Auto Boxes/Flow

  • Mixes in Box
    • Values: 1-20
    • The minimum number of mixes in an automatically generated Box.
    • See: Album/Playlist Player.
  • Max (Mixes in Box)
    • Values: 1-20
    • The maximum number of mixes in an automatically generated Box.
    • See: Album/Playlist Player.

Reset

  • Reset Settings of this Randomization Preset to Defaults
    • Displays a pop-up message allowing you to reset all values back in the Randomization Preset back to their Defaults.

iCloud

iCloud Settings Screen

Wotja Use iCloud (iOS)
(tap image for large)

iCloud Drive Settings Screen

Use iCloud Drive (iOS)
(tap image for large)

iCloud Settings Screen

iCloud Drive (macOS)
(tap image for large)

iCloud Drive Settings Screen

iCloud Drive App (Windows)
(tap image for large)

IMPORTANT: To use iCloud in Wotja you MUST have set up/toggled on iCloud Drive ("iCloud Drive") - See also Apple's iCloud Help resource.

IOS IMPORTANT: You must ALSO have the relevant Wotja App's "Apps Using iCloud" toggle AND the relevant app's Settings "Use iCloud" both toggled on. If you do not want to use iCloud with Wotja turn them both off. If both have different toggle states then when you launch Wotja it can crash. We know it is confusing, sorry!

Using Wotja with iCloud enabled makes it easy to edit/use Wotja files across multiple devices, be they iPhones, iPads, Macs or Windows PCs. When it is enabled then all Wotja files in the iCloud Drive folder are all stored in the cloud, also a great form of backup!

iOS - Set up/Use iCloud Drive:

This screen is where you both turn on the "iCloud Drive" toggle and then set what apps can use it for file saving using the relevant "Apps Using iCloud" toggle.

This screen is accessed as follows: From the iOS Settings Screen > Apple ID, iCloud, iTunes & App Store (Your Name) > iCloud (see also Apple's iCloud Help resource)

  • "iCloud Drive" toggle: This is found after the iCloud Backup toggle. It must be toggled on for any app (including Wotja!) to use iCloud Drive to save data.
  • "Apps Using iCloud" section toggles: Scroll further down the screen to find the version of Wotja that you have installed and then turn the toggle on. Both this and the Wotja "Use iCloud" must have the same toggle status or you can get a crash on launching Wotja.

iOS - Wotja "Use iCloud" toggle:

This screen is where you set whether Wotja can use Mobile Data and whether or not it uses iCloud for file saving. It is accessed from the iOS Settings Screen.

  • Wotja "Use iCloud" toggle: Scroll down the iOS Settings screen to find the version of Wotja that you have installed, tap on it and then in the ensuing screen find the App Settings section and turn on the toggle "Use iCloud". Both this and the Wotja "Use iCloud" must have the same toggle status or you can get a crash on launching Wotja.

macOS - "iCloud Drive" / Wotja "Use iCloud":

See also Apple's iCloud Help resource.

  • "iCloud Drive" toggle: From the macOS System Preferences screen go into iCloud and in the ensuing iCloud screen ensure the iCloud Drive setting is toggled on.
  • Wotja "iCloud Drive" toggle: In the iCloud screen above tap on the iCloud Drive "Options" button and in the ensuing screen (shown left) select the Documents tab and scroll down the screen to find the version of Wotja that you have installed and then turn the toggle on.

Wotja iCloud Drive App screen (Windows):

The Windows iCloud Drive app is required to enable/sync iCloud files on your Windows PC (and thus the Wotja iCloud Drive folder). To set it up find/load the Windows iCloud Drive app and ensure iCloud Drive is toggled on.

Important Note: Wotja for Windows will by default save Wotja files to the Wotja Folder (you can however choose to save to the Wotja iCloud Drive folder using File Save As). All mixdown recordings are always saved to the Wotja Folder. The Wotja Documents screen will, however, only display/load files from the Wotja Folder. If you have saved Wotja files to the Wotja iCloud Drive folder then to see them in the Documents screen simply move them to the Wotja Folder and then press the Action button in the Documents screen and select refresh.

In-App Store

Wotja In-App Store

Wotja In-App Store
(tap image for large)

In-App Store
  • Overview
    • The In-App Store screen is available in all Wotja App variants except for the TV or Watch Player Apps.
      • It can be accessed via:
      • Note: The In-App Store screen in the Plug-ins does not include a functioning In-App Store - it is for information only.
    • Free App Variants ('Wotja 22' AKA 'Wotja')
      • Entering the In-App Store (App or Plug-in variants) will unlock 'Lite+' mode (i.e. the 'Lite' Feature Set (FS) plus a few bonus capabilities).
      • UNLESS there is an active 'Pro' Subscription in the App or UNLESS a Tip Jar (TJ) item was purchased in the last 30 days from the App's In-App Store then when play stops Wotja reverts back to operating in the default 'Lite' mode. Tap any 'Store' button to unlock it again!
      • Wotja Subscriptions and Tip Jar items can only be purchased in the Wotja App, they cannot be purchased in the associated Plug-in.
      • Note: The free variant of Wotja is updated on a rolling basis. This means that year-on-year the latest updates for the latest version are always available for you to install (subject to the Wotja Requirements for that version).
    • Paid-for 'Pro' variants ('Wotja 22 Pro')
      • There are no Subcriptions available in the 'Pro' variants so none are shown in the In-App Store.
      • A Tip Jar is shown but as the 'Pro' variants are locked in 'Pro' mode purchase of tips has nothing to remember.
      • Tip Jar items provide an easy way for you to show extra love for Wotja. See: Why Tip?
  • 'Why Tip?' button
  • In-App Store screen title and active Feature Set (FS)
    • The screen title is "In-App Store " and, depending on the active Feature Set (FS), it will be appended with either "FS: 'Lite+''" (as in the free variant this is unlocked when you enter the Store) or "FS: 'Pro'".
  • Help Button
  • '22 Pro' button
    • This takes you directly to the App Store page for the paid-for Wotja 22 'Pro' variant should you prefer to purchase that or just see the App Store entry for it.
  • Restore button
    • This lets you restore a Feature Set (FS) Subscription (Free Apple and Windows free variants only).
  • Feature Set (FS) Subscription (free iOS/macOS AND Windows Wotja App variants only):
    • Pro (All Devices) [Apple] / Pro [Windows]:
      • Apple: Whilst active, this Subscription unlocks the 'Pro' Feature Set in the Wotja App and Wotja AUv3 Plug-in for macOS, iOS and iPadOS, as well as the Wotja App on tvOS (the Feature Set (FS) auto-reverts to 'Lite' mode when the Subscription expires).
      • Windows: Whilst active, this Subscription unlocks the 'Pro' Feature Set in the Wotja App and Wotja VST3 Plug-in (the Feature Set (FS) auto-reverts to 'Lite' mode when the Subscription expires).
    • Pro (Mobile Devices) [Apple only]:
      • Apple: Whilst active, this Subscription unlocks the 'Pro' Feature Set in the in the Wotja App and Wotja AUv3 Plug-in for iOS and iPadOS only (the Feature Set (FS) auto-reverts to 'Lite' mode when the Subscription expires).
    • "Subscribed" is shown in blue instead of the price when a Feature Set (FS) Subscription is active.
  • Tip Jar (TJ) 'Single Tips':
    • Tip Jar items are available to purchase in the In-App Stores of all App variants of Wotja (they are not available to purchase in the Plug-ins or TV Player or Watch Player Apps).
    • They are NOT subscriptions and they do NOT change the Feature Set (FS).
    • If you purchase *any* Tip Jar (TJ) item in a Wotja App's App Store then *that* App (and associated Plug-in, as relevant) will operate in 'Pro' mode for 30 days following your purchase (and provided you do not uninstall/reinstall *that* App), after which time it will auto-revert to 'Lite' mode.
    • P.S. You can tip as often as you like! . See "Why Tip?"
Manage Feature Set (FS) Subscriptions

It is easy to manage your Wotja Feature Set (FS) Subscriptions, as follows:

  • Tap the "Manage Feature Set (FS) Subscriptions" button in the "Miscellaneous" section.
  • This takes you to a page in the relevant App Store where you can see your active Feature Set (FS) Subscriptions and manage them.
  • Apple info: For Apple information on managing subscriptions please refer to Cancel a subscription from Apple
  • Microsoft info: For Microsoft information on managing subscriptions please refer to Manage a Microsoft subscription
  • See also the FAQ entry on In-App Subscriptions.

Wotja 22 Music Engine

Wotja Music Engine icon

The Wotja Music Engine ("WME") has 6 Generator Types and associated parameters and 4 Generator Rule Objects that allow creation of generative music through a combination of proprietary heuristics and chance (also sometimes referred to as being aleatoric, stochastic or algorithmic).

A Wotja Mix Cell can include one or more Wotja Music Engine (WME) "Generators". See also the Generator Editor.

Generators

Looking for something?: Try page search with Cmd+F/Ctrl+F.

Generator Types
  •  Rhythmic: Generates notes according to the Scale, Harmony, Rhythm, Next Note Rules.
  •  Ambient: Similar to Rhythmic but where note durations are determined by the Ambient parameters.
  •  Sequence: Generates note sequences from a number of different generator sub-types and their data ("Items"):  Euclidian,  Text to Music, Pattern [ B,  R,  F].
  •  Follower: Mirrors notes generated by another Generator.
  •  Repeater: Composes like a Rhythmic Generator but can repeat its notes.
  •  Listener: Detects incoming MIDI notes/events.

Generator Rule Objects

See also the Rule Editor and Mix Rules and Cell Rules.

Each of the above Rule Objects can include one or more Rule Items e.g. "All Scale Major".

Rule Items ("Rules") comprise values for each of its 12 or 24 independent Rule Elements ("Elements"). These Elements can be set to values between 0% to 100% which represent the relative probability (the "weighting") that the Element will be selected by a Generator when it is composing. An Element with value of 0 will not be chosen for composition.

Every time a Generator composes a note its button and the relevant Rule Element will flash.

Composition happens a little in advance but any change to the element values can be reflected quite quickly in the music generated. Some changes, however, such as mix root change, can take a little longer than others to take effect.

Important: When the Pitch Range for a Generator is wide enough, Scale Rules will "wrap around" to accommodate the extra range in notes available.

  Generator - Rhythmic

How do I edit these parameters? See the Generator: Main Editor.

Overview

A "Rhythmic" Generator is the default Generator Type. It composes according to the parameters in the "Phrasing" Parameter Group.

Tip: Refer to the Generator Parameter Group for the top level parameters that are common to all Generators.

Tip: To best allow note durations to fit within the bar structure of a Cell, a Rhythmic Generator calculates them according to the Rhythm Rule it uses.

  Generator - Ambient

How do I edit these parameters? See the Generator: Main Editor.

Overview

Tip: Refer to the Generator Parameter Group for the top level parameters.

An "Ambient" Generator does not use the Rhythm rule for note durations but instead use durations defined by the specialist parameters in the Ambient parameter group. This is to allow them to generate notes without respect for tempo or bar timings. They are wonderful for creating drifting, floating sounds for either background or foreground use as drones or for musical texture.

Parameter Group - Ambient

 Units

You define the Unit of Measure for which the other Ambient Generator parameters are interpreted. This may be one of the following values:

  • Seconds (thousandths of a)

    The parameters including Duration are all interpreted as being in thousandths of a second (i.e. Milliseconds). So, a Duration value of 1000 means one second.

  • Beats (60ths of a)

    The parameters including Duration are all interpreted as being in 60ths of a beat. In the WME a Beat is defined as being one crotchet; you get 4 beats in a bar of 4:4 music. So, a Duration value of 60 means one beat. A Duration value of 30 means a quaver. A Duration value of 20 means a triplet.  A Duration value of 15 means a semi-quaver.  A Duration value of 240 means 4 beats (which is a full bar if the Cell Meter is 4:4).

  • Full seconds

    The parameters including Duration are all interpreted as being in seconds. So, a Duration value of 10 means ten seconds.

 Duration

The Ambient Generator parameters govern how Ambient Generators work.

This defines the minimum duration for which the Ambient Generator will play when it composes a note. The actual value chosen for each note is a value between Duration, and Duration plus the Duration Range. Each and every note composed for this Ambient Generator will have a note whose duration is separately calculated.

  Duration Range

This is combined with the Duration parameter, to determine the duration for which the Ambient Generator will play when it composes a note. The actual value chosen for each note is a value between Duration, and Duration plus the Duration Range. Each and every note composed for this Ambient Generator will have a note whose duration is separately calculated.

  Gap Minimum

This defines the minimum duration for which the Ambient Generator will play when it composes a rest. The actual value chosen for each rest is a value between Gap Minimum, and Gap Minimum plus the Gap Range. Each and every rest composed for this Ambient Generator will have a rest whose duration is separately calculated.

Tip: This is the Duration used for the Phrase Gaps / Phrase Gaps Range parameters i.e. it allows the duration of gaps to be different to that of the notes.

  Gap Range

This is combined with the Gap Minimum parameter, to determine the duration for which the Ambient Generator will play when it composes a rest. The actual value chosen for each rest is a value between Gap Minimum, and Gap Minimum plus the Gap Range. Each and every note composed for this Ambient Generator will have a note whose duration is separately calculated.

Tip: This is the Duration Range used for the Phrase Gaps / Phrase Gaps Range parameters i.e. it allows the duration of gaps to be different to that of the notes.

  Generator - Sequence

Overview

The Sequence Generator type is a special type of Generator as it does not itself generate notes, it use the generator sub-types below to do that:

Sequence Generator sub-types

It is easiest to think of it as a list (i.e. Sequence Array ("Array")) which supports a number of list items (i.e. Sequence Array Items ("Array Item")).

Each Array Item includes all the parameter values needed for the generator sub-type to create note sequences.

In addition, as powerful technique for melody and beat generation, Array Items can be selected at random or played in sequence, as below (see Sequence Chain Syntax, below):

  • Random Selection of Array Items:
    • When the mix starts, any Sequence Generator that has more than one Array Item will have one of those selected to play, according to the probability weighting each has been given (see "Pattern Syntax: prob").
    • Which Array Item is chosen by the Generator depends on a few things:
      • If there is at least one Array Item, then the Array Item chosen to play is based on the Generator making a weighted random selection from the available Array Items. When (if!) the Array Item has done what it is intended to do the Generator will make another selection as to which sequenced sub-pattern to use.
      • An TTM note sequence or Pattern note sequence that is less than a whole number of bars at the Generator's current Meter, will be padded automatically with silence to ensure that it remains bar synchronized.
  • Sequencing Array Items with Sequence Chains:
    • A more advanced technique allows Array Items themselves to be sequenced for play and we call this a Sequence Chain Item. They are easy to use in the Wotja Sequence Chain Editor. If you want to manually edit it, see the syntax below and the syntax examples.

 Sequence Chain Syntax

<S100 R 1.20 2.1 1-2.1-4 2.1>

<[S][prob][.M] R {[seqnum[-seqnumrange].[repeattimes[-repeattimesrange]] [seqnum[-seqnumrange].[repeattimes[-repeattimesrange]]}* >

Where:
  • S: identifies a sequence sub-pattern
  • prob : relative probability of being chosen when there is more than one sequence sub-pattern.
  • M: Mute the sub-pattern (i.e. prevent it being selected!). If none can be selected, then a non-sequence sub-pattern is chosen to play at random as usual each time.
  • R: Required for historical reasons.
  • seqnum: Sequence Number.
    • The index of the non-sequence sub-pattern to play. Default is 1. The sub-patterns are numbered from 1 up.
    • seqnumrange : Sequence Number Range. Default is 0.
  • repeattimes: Repeat Times Minimum.
    • The number of times to repeat this sub-pattern, when selected. A value of "0", will cause the sub-pattern (when selected) to keep playing forever until the end of the Cell! Default is 1.
    • repeattimesrange : Repeat Times Range. Default is 0.
Sequence Chain Syntax Examples:

Key: To aid understanding we use the following color coding: durations and scale intervals.

  • Two Array Items of type Pattern - Both (B).  Play 1 once, then 2 once...
    • <100 B 60 1 60 2 60 3 60 4>
    • <100 B 30 9 30 8 30 7 30 6 30 5 30 4 30 3 30 2>
    • <S100 R 1.1 2.1>
  • Two Array Items of type Pattern - Both (B). Play 1 twice, then 2 twice...
    • <100 B 60 1 60 2 60 3 60 4>
    • <100 B 30 9 30 8 30 7 30 6 30 5 30 4 30 3 30 2>
    • <S100 R 1.2 2.2>
  • Two Array Items of type Pattern - Both (B). Play 1 or 2 twice, then 1 or 2 twice...
    • <100 B 60 1 60 2 60 3 60 4>
    • <100 B 30 9 30 8 30 7 30 6 30 5 30 4 30 3 30 2>
    • <S100 R 1-1.2 1-1.2>
  • Two Array Items of type Pattern - Both (B). Play 1 once, then 2 twice, the one or 2 once, then 2 once...
    • <100 B 60 1 60 2 60 3 60 4>
    • <100 B 30 9 30 8 30 7 30 6 30 5 30 4 30 3 30 2>
    • <S100 R 1.1 2.2 1-1.1 2.1>
  • Two Array Items of type Pattern - Both (B). Play 1 once, then 2 forever...
    • <100 B 60 1 60 2 60 3 60 4>
    • <100 B 30 9 30 8 30 7 30 6 30 5 30 4 30 3 30 2>
    • <S100 R 1.1 2.0>

  Sequence: Euclidian

How do I edit these parameters? See the Sequence: Euclidian Editor.

Overview

Tip: See also this very helpful video from UncertainMusicCorps that explains Euclidian sequencing in detail, and with examples.

The "Euclidian" Sequence Generator sub-type is for generating (at random) a note sequence from 3 core parameters (Steps, Fills, Rotation).

The note pitches are determined by the Pitch and Pitch Strategy settings and note durations are determined with Duration and Rhythm Strategy settings.

The generated note sequence can be repeated a number of times (Repeats) after which time a new note sequence is randomly generated (which is where Range values come into play).

If you want to more tightly specify a note sequence then consider using the "Pattern" Sequence Generator sub-type.

Notes/Tips
  • The Pattern Mutation Factor doesn't apply to Euclidians.
  • Unlike other Sequence items, Euclidians don't auto-pad to the current bar boundary at the end.
  • A rough outline of the Sequence notes is displayed at the top of the Euclidean editor. We hope to improve this in the future.
  • You can use a number of different Euclidean generators in a Cell to create a form of chording.
  • If you want 4 Euclidean playing against each other, to make an interesting simple drum kit, just have 4 Euclidean sequence generators all feeding the same MIDI channel. Choose different Pitches so each one plays a different Drum sound.
  • Try building up "melodic patterns" by having a number of Generators going, each with their own Euclidian pattern!

Parameter Group - Euclidian (EUC)

  Steps

Values: 1 to 128

This value determines the number of "steps" there will be in a generated note sequence (assuming the Steps Range, below, is 0). Empty steps are rests and filled steps (Fills, below) play notes.

Example: If Steps is 16 and Steps Range is 0, the number of steps is always 16.

Note: If a non-zero Steps Range is specified the number of steps can change every time the next note sequence is generated.

Tip: If you do not want the Steps value to change when the next note sequence is generated (see Repeats), ensure Steps Range is set to 0.

  Steps Range

Values (optional): 0 to 128

Every time a new note sequence is generated (see Repeats) the Steps value is recalculated and will be somewhere between Steps + Steps Range.

Example: If Steps is 16 and Steps Range is 4, then the next time a note sequence is generated the calculated Steps value used could be anywhere between 16 and 16+4 (i.e. between 16 and 20).

  Fills

Values: 1 to 128

For the generated note sequence this value determines how many of the steps above will be "filled" and so play a note (assuming the Fills Range, below, is 0).

Example: If Fills is 4 and Fills Range is 0, the number of steps that are "filled" is always 4.

Note: If a a non-zero Fills Range is specified the number of filled steps can change every time the next note sequence is generated.

Tip: If you do not want the Fills value to change when the next note sequence is generated (see Repeats), ensure Fills Range is set to 0.

  Fills Range

Values (optional): 0 to 128

Every time a new note sequence is generated (see Repeats) the Fills value is recalculated and will be somewhere between Fills + Fills Range.

Example: If Fills is 4 and Fills Range is 4, then the next time a note sequence is generated the calculated number of Fills used by it could be between 4 and 4+4 (i.e. 8).

  Rotation

Values: -128 to 128

Determines in which step the first note of the note sequence will occur (assuming the Rotation Range, below, is 0). This value can be thought of as a "starting offset" if you prefer as the note sequence "wraps around" and does not get foreshortened.

Example: If Rotation is 3 and Rotation Range is 0, the starting note is always in step 3.

Note: If a non-zero Rotation Range is specified the "starting offset" can change every time the next note sequence is generated.

Tip: If you do not want the Rotation value to change when the next note sequence is generated (see Repeats), ensure Rotation Range is set to 0.

  Rotation Range

Values: 0 to 256

Every time a new note sequence is generated (see Repeats) the Rotation value is recalculated and will be somewhere between Rotation + Rotation Range.

Example: If Rotation is 3 and Rotation Range is 4, then the next time a note sequence is generated the calculated Rotation value used could be between 3 and 3+4 (i.e. 7).

  Repeats

Values: 1 to 100

This value determines how many times a generated note sequence will repeat.

Once the note sequence has been repeated the correct number of times a new note sequence is generated. This cycle continues until the Sequence Item item is changed or the Generator is stopped.

  Repeats Range

Values (Optional): 0 to 100

Every time a new note sequence is generated the Repeats value is recalculated and will be somewhere between Repeats + Repeats Range.

Example: If Repeats is 3 and Repeats Range is 4, then the next time the note sequence repeats the calculated Repeats value might be any where between 3 and 3+4 (i.e. between 3 and 7 times).

  Pitch

Values: 1 to 128

Important: The Pitch value is only relevant when the Pitch Strategy is set to either "Pitch: Fixed MIDI Pitch" or "Pitch: Interval in Scale Rule".

Note: If a a non-zero Pitch Range is specified the note pitch can change every time a note is played.

  • "Pitch: Fixed MIDI Pitch":
    • This parameter is primarily for use with beats where a specific MIDI note pitch is used to trigger a specific drum sample.
  • "Pitch: Interval in Scale Rule":
    • Uses the Pitch value as the index value for available scale rule elements (c.f. how Both patterns work). This can get a little complicated as Scale Rules can have from one to 24 elements defined and the actual note played also then depends on what is permitted by the Generator's Pitch and Pitch Range settings.
    • Example: A value of 1 corresponds to the first interval in the Scale Rule, usually the root. Say the Generator's Pitch parameter was set to 48 and Pitch Range set to 24. The note played for value of 1 would have pitch 48. What happens if you have set a Pitch value of 60? Well, that also depends on the number of elements in the Scale Rule which acts like a modulo. Say there were 7 elements in the Scale Rule. 60 modulo 7 is 56 + 4 remainder. So, 60 would represent the 4th scale rule element. As we said, it can get a bit confusing...

  Pitch Range

Values: 0 to 128

Every time a note is played the Pitch value is recalculated and will be somewhere between Pitch and Pitch Range.

Example: If Pitch is 60 and Pitch Range is 4, then the next time a note is played the calculated Pitch value used could be between 60 and 60+4 (i.e. between 60 and 64).

  Duration

Values:

  • 2 note (breve, 480 ticks)
  • 1 note (semibreve, 240 ticks)
  • 1/2. note (dotted minim, 180 ticks)
  • 1/2 note (minim, 120 ticks)
  • 1/4 note (crotchet, 60 ticks)
  • 1/8. note (dotted quaver, 45 ticks)
  • 1/8 note (quaver, 30 ticks)
  • 1/12 note (triplet, 20 ticks)
  • 1/16 note (semiquaver, 15 ticks)
  • 1/24 note (-, 10 ticks)
  • 1/48 note (-, 5 ticks)

The value of this setting determines the duration of a "step" when Rhythm Strategy is set to "Built-in".

If Rhythm Strategy is "Use Rhythm Rule" then the duration of any step is that of the particular element of the Generator's Rhythm Rule chosen to be used for that step. That means that each step can have a different duration.

  Rhythm Strategy

Values:

  • Built-in
  • Use Rhythm Rule

If Rhythm Strategy is "Built-in" then the duration of a "step" is set by the Duration parameter.

If Rhythm Strategy is "Use Rhythm Rule" then the duration of any step is that of the particular element of the Generator's Rhythm Rule chosen to be used for that step. That means that each step can have a different duration.

  Pitch Strategy

Values:

  • Pitch: Fixed MIDI Pitch
    • Note value number (0 to 127) - great for drums. See Pitch.
  • Pitch: Interval in Scale Rule
    • Uses the Pitch value as the index for available scale rule elements. See Pitch.
  • Ignore: Let Wotja Compose Each Note
    • The note sequence is composed using the Generator's Scale, Harmony, Next Note rules (e.g. as like for for Ambient, Rhythmic etc. Generators)

  Sequence: Text to Music (TTM)

How do I edit these parameters? See the Sequence: Text to Music Editor.

Overview

"Text to Music" Generators have their own special set of parameters and allow text in any language to generate a seed melody which, even though not visible, is in a Pattern syntax. Use English, Chinese, Japanese, Russian, German, French - whatever language takes your fancy, you will always get a melody!

In general it takes 2 characters to generate a note. Note that if your text is < 6 characters (e.g. Hello, which is 5 characters), we turn it into HelloHello ... which makes it sufficiently long to make at least 3 notes (that actually generates a few more).

Parameter Group - Text to Music (TTM)

  Cut-Up Rule

The selection you make here determines what text is used for TTM. If you select one of the Cut-up options then the relevant text from your mix Cut-up will be displayed in the Note Sequence & Cut-up Text Graphic above this parameter. Note that if there is no text available in a selected line of Cut-up (or Custom Text, depending which is selected to be used) then the TTM Generator will have no text to work with and so no notes will be generated.

  • Custom: Uses text that you enter in the TTM Custom Text field.
    • See the TTM Editor for details on how to do this.
  • Cut-Up: Line#=Track# (Default): This setting is very powerful when it comes to mixes that feature TTM. It means you can harness the power of the Cut-up Editor to quickly generate text that can be used to populate the TTM for multiple Generators - all at once! It is easiest to understand by example: if you have this setting and are using a TTM Generator in say Track 1 then it will use line 1 of text in your mix Cut-Up. If you had a TTM Generator in Track 3 it would use line 3 of your mix cut-up, and so on.
  • Cut-up: All Lines: Uses the text in all lines in your Cut-up for the purposes of TTM
  • Cut-Up: Line# 1-11: Uses the text from Line# 1 to Line# 11 (as selected) of your Cut-up for the purposes of TTM. You can set up TTM generators all to use the same line if you want!

  TTM Custom Text

This is custom text in any language that can be used to generate a TTM seed melody. In Wotja, tap on this field to go to the TTM Custom Text Editor screen.

  Tune Start at Index

From the notes composed, set the first note you want your tune to start playing at. Maximum value is Notes - 1.

  Tune Length Override

From the notes composed, set how many notes will play. Maximum value is Notes - Tune Start at Index.

  Phrase Length

Defines the minimum number of notes there are in a "phrase" (and you can see in the indicator above how many notes your text has generated - all of these notes get put into phrases to make the "tune").

  Phrase Length Range

Sets the range above the minimum.

  Gaps

Defines the minimum number of rests between each phrase (allows a tune to breathe). Rests are measured in terms of 16th notes.

  Gaps Range

Sets the range above the minimum.

  Interval

Defines the minimum number of rests between each play of the tune (allows a tune to breathe). Rests are measured in terms of 16th notes.

  Interval Range

Sets the range above the minimum.

  Repeats

The total number of times the original melody or a variation of it is played. This also applies to improvised melodies (see Improvise toggle).

  Repeat Range

Sets the range above the minimum. Also applies to improvised melodies (see Improvise toggle).

  After Tune Repeats

This parameter determines what happens after the FIRST complete play and specified number of repeats of the original TTM generated melody (the "repeat cycle"). There are 3 options:

  • Improvise with Variations
    • After the repeat cycle the TTM Generator will continuously generate melody variations.
    • Tip: If Variation (below) set to 0, then the original TTM generated melody will continue to repeat for ever.
  • Go Quiet
    • Once the repeat cycle has completed then the TTM Generator stop playing.
  • Select Next Sub-Pattern
    • Once the repeat cycle has completed then the next Sequence Array Item (if any) is selected to play.

  Variation

Selects how much variation is applied to the previous melody when improvising.

  Rhythm Strategy

Determines the duration of notes to be used for the TTM melody.

  • Built-in
    • The note durations are generated according to some fixed (and non editable) default settings.
  • Use Rhythm Rule
    • The note durations are generated according to the Rhythm Rule in use by the Generator.
    • Tip: This allows you to decide what durations you want to have used.

  Duration Multiplier

Values: 1 - 32

This "multiplier" setting lets you increase the duration of EACH TTM note generated.

Example: A value of 2 will double the duration of all TTM notes generated so e.g. a 1/8th note is changed to have a duration of a 1/4 note etc.

Example Use Case: Using TTM to generate a series of long "pedal" notes where you do not want to have your mix use a very slow mix tempo.

  Sequence: Pattern

How do I edit these parameters? See the Sequence: Pattern Editor.

Overview

The Sequence "Pattern" Generator sub-type can generate notes from various fixed MIDI-like patterns.

There are 3 different kinds of pattern type, and the Generator will reflect the color. of whatever is in use at the time:  Both (B),  Rhythm (R) and  Fixed (F) (see Pattern Types).

Patterns are able to follow generative sequencing rules and can adapt automatically to changes in Scale Rules. They are great for bringing some structure to your composition.

Patterns can be mutated while playing, according to parameters defined in the Pattern Parameter Group. When a Pattern is mutating it composes as would a Rhythmic Generator, and they use the Phrasing Parameter Group parameters.

They are easy to edit/use in the related Wotja Pattern Editors. As they have a text syntax (below) they can also be edited in a text editor.

Parameter Group - Pattern

  Pattern Types

There are 3 types of Pattern:

  •  B - Both: i.e. "Melodic" pattern using scale rule intervals. Includes a series of both paired note durations and scale rule interval values. A scale rule interval value of 1 represents the 0ve scale interval used by the Generator and a value of 0 represents a rest.
  •  R - Rhythm: Defines note durations to use, but leaves selection of the note pitches to use up to the Generator acting as a Rhythmic Generator. A negation duration represents a rest.
  •  F – Fixed: i.e. "Melodic" pattern using fixed MIDI pitches. Defines the root pitch (60 is Middle C) to use for the pattern and a series of both paired note durations and relative pitches. The pitch values are relative to the root pitch and are independent of scale rule. A pitch value of 0 represents the root pitch and a value of -1 means treat this note as a rest note. These patterns can be useful for drum riffs, e.g. with MIDI drums.

  Use Percent

When the Generator starts a new sub-pattern at the start of a bar, it consults the value you have defined for Use Percent. This parameter determines the probably of the Generator using the Pattern for the bar; or alternatively, compose a completely new bar (that you will hear only once!) were it to be of Rhythmic Generator Type.

If Use Percent is 100, then the Generator will always use the pattern. If Use Percent is 50, then the Generator will instead compose a new bar every other bar or so. Note that the Generator will never interrupt a sub-pattern that it is playing; the Use Percent parameter is considered only on a sub-pattern boundary, at the start of a new bar.

  Mutation Factor

The mutation factor is used when a bar is considered for mutation (which can happen only if Bars Between is not zero! The Mutation Factor determines the level of mutation to apply. If set to 10.0%, then when playing from a sub-pattern, this means that each note that would be played from the pattern, has a 10% chance of having a different one composed, with subsequence pattern playbacks keeping that mutation. Note that if Mutate Rhythm? is set to Yes, then if the composed note is longer than the composed-over pattern note, this might overlap and cancel-out some other notes in the sub-pattern.

  Bars Between

This parameter defines the number of bars that the Generator waits between, before trying to mutate a bar in a pattern according to the Mutation Factor. If Bars Between is set to zero, the Generator can never mutate. Set to 1 if you want mutation every bar, 2 if you want mutation every other bar, etc. ...

The actual number of bars used is selected randomly each time, somewhere in the range from Bars Between, to Bars Between plus Bars Range.

  Bars Range

This parameter is used to help define the number of bars between attempts by the Generator to mutate the current pattern. The actual number of bars used is selected randomly each time, somewhere in the range from Bars Between, to Bars Between plus Bars Range.

  Mutate Rhythm?

If set to No, then the timing of the sub-pattern is preserved perfectly; only the frequency of the pattern notes will be changed when the pattern is mutated. Otherwise, the duration of each note is chosen from the rhythm rules and phrase/phrase gap rules for the Generator.

  Meter

Defines the Meter to be used by the Generator, such 4:4 or 3:4 or 6:8. A value of ?, which is the default, means to use the Meter defined for the Cell. A different value allows the Generator to work with a completely different meter, which can be used for interesting polyphonic effects.

  Pattern Syntax

A Pattern is actually text string in a specific format, surrounded by < and > symbols.

The Pattern syntax is somewhat complicated and will require a bit of effort to get to grips with. Even if you do wish to use it, we still recommend that you first use the Wotja Pattern Editor to familiarize yourself with patterns and how they work.

<[prob][.M] pattype {[dur][.vff[-vffr]] [scaleint]}*>

Where:
  • prob : the relative probability that this sub-pattern is selected; relevant only where there is more than one sub-pattern! The default value is 100%.
  • M : Flag indicating that the sub-pattern is to be "muted", i.e. not allowed to be selected. This can be useful for testing of individual sub patterns; where you might want to "solo" a sub-pattern by muting out all the others.
  • pattype : One of:
    • R: Rhythm
    • B: Both
    • F: Fixed, followed by the root note in MIDIpitch.  e.g. F60.
  • dur : Note Duration / WME time units.
    • The WME employs an underlying "time unit" that is 1/60th of a crotchet/quarter note. WME note Duration values map onto standard music notation in the following way (irrespective of meter) [# WME time units - Composed note length]:

      • 240 - whole note (i.e. one bar of 4:4)
      • 120 - minim/half note
      • 60 - crotchet/quarter note
      • 30 - quaver/eighth note
      • 20 - triplet/twelfth note
      • 15 - semi-quaver/sixteenth note
    • So by way of example:

      • one bar of 4:4 is 4 * 60 = 240 WME time units.
      • one bar of 3:4 is 3 * 60 = 180 WME time units.
      • one bar of 2:4 is 2 * 60 = 120 WME time units.
      • one bar of 1:4 is 1 * 60 = 60 WME time units.
      • one bar of 6:8 is 6 * 30 = 180 WME time units.
      • one bar of 9:8 is 9 * 30 = 270 WME time units.
    • You are of course free to experiment using other time unit values, which will mean different things. E.g. 10 time units is a 24th note etc.

      In R patterns a negative duration indicates a rest for that time; in F patterns a pitch of -1 indicates a rest for the note duration.

      If a note sub-pattern is not an exact even number of bars (e.g. 2 and and half bars at the current meter!) then the engine will pad to silence to the end of the nearest bar boundary.

  • vff: Velocity Force Factor (optional, any integer value)
    • Note: Velocity Force Factor is an INTEGER % SCALE FACTOR applied to the velocity, where the velocity is first determined from the velocity envelopes. For example, in a pattern [dur][.vff[-vffr]] 60.50 means a note of length 60 WME time units with 50% VFF scaling, 30.15 means a note of length 30 WME time units with 15% VFF scaling, and 120.100-20 means a note of length 120 WME time units and with 100% VFF scaling with a range of 20%.
      • The scaled pattern note velocity can never be any less than 1.
      • The scaled pattern note velocity can never be any greater than 127.
      • Note that a pattern note velocity scaling factor of 0 always returns minimum MIDI velocity, which is 1. You cannot use a factor of 0 to "completely mute" a note.
      • Example: A Generator's velocity (min) envelope has a value of 100, with a velocity range envelope value of 20 - the velocity for a given note is selected randomly in that range, to be (say) 104. Where defined, the pattern note's Velocity Force Factor is used to scale that velocity, to a final value from 1 to 127. e.g. if the Velocity Force Factor is 50 (%), in this example we'd chose a final velocity value of: 104 * 50 (%) = 52. The Velocity Force Factor Range value, if defined, applies a range to the scaling factor.
  • vffr: Velocity Force Factor Range (optional, any integer value and used in conjunction with the above).
  • scaleint: Scale interval (not present for Rhythm patterns).
    • B rule: interpreted as being the first valid note in current Generator's Scale Rule; i.e. the first element in the Generator's Current Scale Rule which does not have a zero value. "1" is therefore usually the root note (c.f. the Pitch parameter). "0" has the special meaning of indicating a "REST" for the note duration.
    • F rule: distance in semitones up from the root note (so "0" means the root note). E.g. if F60 (Middle C), then a pitch value of 5 means MIDI pitch 65. A pitch value of -1 is a rest.
Pattern Syntax Examples:

Key: To aid understanding we use the following color coding: durations, velocity values and scale intervals.

Copy and paste these into Wotja to try them out.

  •  Both (B):
    • <100 B 60.15-30 1 60 2 60.127 3 15 7>
  •  Rhythm (R):
    • <100 R 60 60 60.127 60>
  •  Fixed (F):
    • <100 F60 60.127 1 60 4 30 5 15.70-120 7>
    • <100 F58 15 1 45 -1 15 1 45 -1 15 1 45 -1>
      • NB: Plays note with pitch 58 (or MIDI patch 59 on Ch10): note on, note off, note on, note off etc.
    • <100 F40 15 1 15 7 15 6 15 13 15 2 15 8 15 4 15 11 15 13 15 2 15 8 15 2 15 2 15 8 15 4 15 14>
      • NB: Plays a series of notes for a whole bar (or patches in the drum kit on Ch10) starting at base pitch 40, each one a 16th note...

  Generator - Follower

How do I edit these parameters? See the Generator: Main Editor.

Overview

A "Follower" Generator is used in a call-response manner, allowing it to follow the behavior of other Generators according to parameters in the "Following" Parameter Group.

In the Cell, select the Generator which you want your "Following" Generator to follow - you may follow any Generator of any type. You may even follow a Generator that follows another Generator that follows another Generator... provided that you don't try to define a cyclic dependency which loops back to the current Generator! If you don't specify a Generator to follow then it won't play.

Important: If you follow a Generator that is using the Chording parameter (i.e. to create more than one note), then only the first note in the chord is followed.

Parameter Group - Follower

  Follow Generator?

This parameter simply allows you to select another Generator in the Cell for your "Following" Generator to follow.

  Percent

This parameter sets the percentage of notes that the Followed Generator responds to so as to emit a note. Set to 100 if you want the Following Generator to emit a note for every note played by the Followed Generator. Set to a smaller value if you want to thin-out the notes played by the Following Generator. This is also useful for building networks of chords,  where if you have a number of Following Generators all following either each other or one main Generator, and if those Following Generators have the Percent Parameter to less than 100, then sometimes you will hear dense chords, and sometimes you will hear thinner chords.

  Strategy

This parameter defines the pitch to use for a note generated by the Following Generator.

Note: The setting of the Rule Harmonize? flag is important for this parameter. If set to "Yes" then notes will only be generated that are available in the Scale Rule and Next Note Rule AND that harmonize according to the relevant Harmony Rule. If set to "No" then that is not enforced, something that is particularly important when using Semitone Shift, below. See also Cell Harmonize With Me and Cell Harmonize With Others which govern how Cells compose with each other.

The available values are:

  • Chordal Harmony

    This causes the Following Generator to choose notes which respect the currently defined Scale, Harmony and Next Note Rules.

  • Interval Within Scale Rule

    This causes the Following Generator to choose notes which are offset from the followed note, such they are at an interval within the Scale Rule, defined as a value randomly selected between the Shift / Interval and Shift / Interval plus Shift / Interval Range values.

    For example, if these values are 1 and 2 respectively, then each time a note is chosen, it will be between 1 and (1+2)=3 Scale Rule intervals up from the Followed Generator's note. It is important to understand that this refers to the non-zeroed elements in the current Scale Rule, in other words only those notes that are available within the Scale Rule.

    So, in our example, if we were using a Major Scale Rule, and if the followed note were C4 (Middle C), and if Wotja chose a value of 2 as its random value; then the played note would be E4 (Middle C), which is the second note up from Middle C within the Major Scale Rule.

  • Semitone Shift

    This causes the Following Generator to choose notes which are offset up from the followed note, such they offset from the followed note by a number of semitones which is a value randomly selected between the Shift / Interval and Shift / Interval plus Shift / Interval Range values.

    For example, if these values are 1 and 2 respectively, then each time a note is chosen, it will be between 1 and (1+2)=3 semitones up from the Followed Generator's note.

    So, in our example, if we were using a Major Scale Rule, and if the followed note were C4 (Middle C), and if Wotja chose a value of 3 as its random value; then the played note would be D#4 (Middle D#), which is the third semitone note up from Middle C. This value is used even though it is not in the current scale rule, provided of course the "Harmonize?" flag noted above is set to "No". If you want to achieve something similar but with the "Harmonize?" flag set to "Yes", then for the shifted note(s) required, use a Scale Rule, Harmony Rule and Next Note Rule (for the relevant Generator) that allow those note(s) to be chosen.

  Units

You define the Unit of Measure by which the Delay and Delay Range parameters are interpreted. This may be one of the following values:

  • Seconds (thousandths of a)

    The parameters including Duration are all interpreted as being in thousandths of a second (i.e. Milliseconds). So, a Duration value of 1000 means one second.

  • Beats (60ths of a)

    The parameters including Duration are all interpreted as being in 60ths of a beat. In Wotja a Beat is defined as being one crotchet; you get 3 beats in a bar of 4:4 music. So, a Duration value of 60 means one beat. A Duration value of 30 means a quaver. A Duration value of 20 means a triplet. A Duration value of 15 means a semi-quaver. A Duration value of 240 means 4 beats (which is a full bar if the Cell Meter is 4:4).

  • Full seconds

    The parameters including Duration are all interpreted as being in seconds. So, a Duration value of 10 means ten seconds.

  Delay

This defines the minimum delay after which the Following Generator will play a followed note. The actual value chosen for each note is a value between Delay, and Delay plus the Delay Range. Each and every note composed for this Following Generator will have a note whose delay is separately calculated.

  Delay Range

This is combined with the Delay parameter, to determine the delay after which the Following Generator will play a followed note. The actual value chosen for each note is a value between Delay, and Delay plus the Delay Range. Each and every note composed for this Following Generator will have a note whose delay is separately calculated.

  Shift/Interval

Used when the Strategy is either Interval Within Scale Rule or Semitone Shift.

This causes the Following Generator to choose notes which are offset in some way from the followed note, according to the Strategy; where the offset is defined as a value randomly selected between the Shift/Interval and Shift/Interval plus Shift/Interval Range values.

  Shift/Interval Range

This represents the "Shift/Interval Range", and is used when the Strategy is either Interval Within Scale Rule or Semitone Shift.

This causes the Following Generator to choose notes which are offset in some way from the followed note, according to the Strategy; where the offset is defined as a value randomly selected between the Shift/Interval and Shift/Interval plus Shift/Interval Range values.

  Generator - Repeater

How do I edit these parameters? See the Generator: Main Editor.

Overview

"Repeater" Generators are like "Rhythmic" Generators, with the added feature that they can be defined to repeat notes that they have composed in previous bars, according to rules defined in the Repeat Parameter Group. When not repeating previous bars, Repeater Generators compose as if they were of Rhythmic Generator Type.

Parameter Group - Repeater

 Repeat Generator?

You define the name of the Generator from which you would like, from time-to-time, to repeat past bars of music. If you simply want to repeat bars played in the past for the current Generator, simply select the magic value of '?', which is also the default value.

  Percent

When the Generator starts composing a new bar, it takes a look at this parameter value. This defines for what percent of the time the Generator should repeat previously-composed music. Set this parameter to 100 if you always want past composed music to be repeated (where available!); set to 0 if you never want past music repeated by this Generator. When the Generator doesn't choose to repeat past data it composes a new bar of music were it to be of Rhythmic Generator Type.

  Bars

Defines the number of bars for which the Generator should repeat a past-composed chunk of music. The actual value chosen is somewhere between Bars and Bars + Bars Range.

  Bars Range

Defines the upper limit of the number of bars for which the Generator should repeat a past-composed chunk of music. The actual value chosen is somewhere between Bars and Bars + Bars Range.

  History

Defines the number of bars in the past, from which the Generator will choose the past-composed music to repeat. The actual value chosen is somewhere between History and History + History Range.

  History Range

Defines the upper limit of the number of bars in the past, from which the Generator will choose the past-composed music to repeat. The actual value chosen is somewhere between History and History + History Range.

  Generator - Listener

How do I edit these parameters? See the Generator: Main Editor.

Overview

A "Listener" Generator detects a monophonic (not polyphonic) incoming MIDI note event on its MIDI channel and presents it as a virtual composed note. It will only detect a subsequent note if it first receives a note off for the previous note.

To generate sound via the WAE it needs to be followed by a Follower Generator. Used like this, Listener Generators allow you to create simple hyper-instruments where external input can influence the music that is generated. Such music is also referred to as Adaptive Generative Music [AGM].

Listener Generators do not have any special parameters, which is why there is no special Parameter Group, and nor do they require any use of scripting. However, they can be used with Intermorphic Wotja Script to create more advanced hyper-instruments.

When an incoming MIDI note is detected, e.g. C60, then:

  1. If the Generator has a Chords Depth value of 1 and Chords Range value of 0 (both default values) it echoes a single virtual note that can be "heard" only by a Follower Generator - this is used to create an actual note.
  2. If the combined Chords Depth or calculated Chords Depth/Chords Depth Range value is >1 then the first note is still silent (and echoed as above and so can be followed, too), but the composed chording notes will also play (e.g. through the WAE) and Generators can follow those notes, too.

The virtual note created by a Listener Generator is pitch shifted, if necessary, to fit within the band of pitch values set by its Pitch and Pitch Range parameters (see Rhythmic Generator).

Playing with a Listener Generator:

  • Ensure Wotja has been setup, as below.
  • Ensure your Listener Generator is on the MIDI channel you are expecting to detect MIDI notes.
  • Either Follow that Listener Generator with a Follower Generator (1 above) and maybe use that Generator's Chording parameters to play chords, OR set its Chording parameters to >1 (as in 2 above).
  • Press play in Wotja app to start your Cell and for the Listener Generator to detect the MIDI notes fed into it (and remember that the Listener Generator will only detect a subsequent note if it first receives a note off for the previous note!).

Wotja Setup:

MIDI emitting app or MIDI Device feeding MIDI notes into the Wotja app
  • Connect the MIDI Device or load the MIDI app (e.g. for iOS MIDIKeys [you must have CoreMIDI Port set to 'Virtual Port'] or e.g. for macOS Mini Keys). Ensure you have it set up to send MIDI notes on the Virtual MIDI channel you want, e.g. MIDI Channel 1 or Omni etc. (or just check what it is sending using some kind of MIDI Monitoring app).
  • Once the Device is connected or the App has loaded you will likely need to restart Wotja for it to be detected.
  • Then in Wotja > Settings, select the MIDI Input Devices button which takes you to the MIDI Input Devices screen:
    • Toggle on the relevant Channels for your desired MIDI Input Device(s), e.g. 'Network Session 1' on iOS, or e.g. iOS 'MIDIKeys' or e.g. macOS 'Mini Keys' etc.
  • To hear sound in Wotja, ensure you have the "WAE for Sounds & FX" setting toggled on in Settings. Note that when playing through the WAE the latency you will experience is mostly affected by both the Audio Block Size. When that is 1024 samples the latency is about 1 second; when set to its minimum value of 256 samples then it is about 1/4 of a second. You may also wish to experiment with the MIDI Latency setting.
  • Once you have done the above, try this example:
    1. Create a New Text-only mix (Documents > Add New > Text Only).
    2. Add this Template to an empty cell - WME Generator Types > Listener + Follower (this is a good starting point).
    3. Tap the play button in Wotja to start the mix playing (it will be silent).
    4. Tap tap keys on your MIDI Device or MIDI App and you should hear Wotja play that note!

  Generator

How do I edit these parameters? See the Generator: Main Editor.

Overview

The "Generator" Parameter Group includes a handful of the most basic parameters used by all Generators types.

Parameter Group - Generator

  Name

Every Generator in a Wotja file has a unique name. You can use any name you want, provided it is not empty, and provided it is not a single question mark (which has a reserved meaning for use with Rules, which you will find out about later).

  Generator Type

See Generator Types.

  Mute

Toggle this setting (Yes/No) to mute or unmute the Generator. Certain Generator Types might take some time to respond, depending on how far in advance their notes are composed.

When the keyboard focus is on the Mute cell, you have various extra menu options available to you in the "Control" Menu. These are as follows:

  • Solo Generator
  • Unmute All Generators
  • Mute All Generators

If you hold down the ctrl key when you click on the mute cell, you will toggle all other Generator's mute states, without changing the mute state of the Generator that you ctrl-click on. This can be very handy.

  MIDI Channel

A Generator emits data on a MIDI Channel. MIDI channels are numbered from 1 to 16. The default MIDI channel for a Generator is actually MIDI channel 0 – which tells the WME to assign a free channel from 1 to 16 automatically, as best it can. MIDI channel 10 is always reserved for percussion sounds, such as drum sounds or other untuned sound.

  Pitch

Set the Pitch to be the minimum pitch for which you want your Generator to compose. The WME will ensure that it composes no notes less than this pitch value.

  Pitch Range

Set the range of pitches in semitones above the Pitch which can be used for composition. The WME will ensure that it only composes notes with pitches between Pitch and Pitch + Pitch Range.

Note: This has a minimum value of 11 to ensure that notes will be generated whatever the Root note of the mix is set to.

  Patch

Each Generator is assigned a Patch and that Patch value is used whenever it generates a MIDI note.

Important: The Patch parameter is not used by a WAE synth network, e.g. a Wavetable Unit, where SF2 and patches must be manually selected. It is useful, however, when sending MIDI to a 3rd Party MIDI Synth such as a Wotja-hosted Plug-in, a 3rd Party DAW or an external MIDI sound module.

Other Notes

In general, the WME does not emit any MIDI bank select CC information for a Generator before it emits the Patch Change MIDI event. However, you can force the WME to emit such information, by typing-in a special format patch value; where you type-in the patch in the format: patch.msb.lsb, for example:

98.53.4

In this example, the WME will emit bank select CCs for both MSB and LSB according to the settings you supply (53 and 4 respectively, in this case). If you don't specify a value for the lsb, then the WME will only emit a Bank Select MSB CC (CC number 0). If you supply the lsb, then the WME will also emit a Bank Select MSB CC (CC number 32).

  Send MIDI Bank/Patch?

Not all software synthesizers for your favorite sequencer like having Patch data supplied to them via a Patch Change MIDI event. If this is the case, simply change the Send MIDI Bank/Patch? parameter to No (unchecked), and the WME won't send any MIDI patch change events.

  Generator - Rule Objects

How do I edit these parameters? See the Generator: Rule Editor.

The Generator Rule Object parameters govern how your Generator works. The Rules themselves are edited in the relevant Rule Editor. See Rule Objects.

Parameter Group - Rules

  Scale Rule

See also: Rule Editor and See Rule Objects; Standard Rule Values

Each Generator composes according to an Wotja Music Engine (WME) Scale Rule. The Rule defines both the notes in the musical scale that are available for use and the note probability weightings.

Scale Rules can selected from the Standard Rule Values list (below) or can be a custom Rule you have created and named as you want.

Tip: If you are getting unexpected results, remember that the notes that can be chosen by the WME ALSO depend on the Harmony Rule and Next Note Rule in use, and, as relevant, the settings of the "Harmonize?" and/or Harmonize with Me/Others checkboxes.

Scale Rules can be set at a Generator, Cell or Mix level - see the Rule Editor for details.

  • Scale Rule elements: 24
    • These elements represent the semitone distance from the Root note defined for this Cell, these being: P1 (root), m2, M2, m3, M3, P4 (perfect 4th), b5, P5 (perfect 5th), m6, M6, m7, M7, P8 Oct (octave), m9, M9, m10, M10, P11 (perfect 11th), m125, P15 (perfect 13th), m14, M14, m15, M15.
    • Element values: % probability weighting
  • Note 1: If opening an "old" rule that contains elements in just one octave range, we automatically extend it by duplicating those elements into a higher octave, and;
  • Note 2: We wrap around the two octaves, matching Pitch Minimum as well as we can:
    • If Generator has pitch minimum of B, but Root is C; wrap around the rule starting from the C below.
    • If Generator has pitch minimum of D, but Root is C; wrap around the rule starting from the D below.
Included Scale Rules

The "Standard Rule" items below are included in Wotja. To select one of them see the Rule Editor > Toolbar Action button B > "Use Standard Rule Value" menu item.

Note: Rule objects can be referenced in Wotja Script.

Scale Rule Name Element Values
Default 1 0 0.5 0 1 0.5 0 1 0 0.5 0 0.5
All Scale Major 1 0 1 0 1 1 0 1 0 1 0 1
All Scale Minor Natural 1 0 1 1 0 1 0 1 1 0 1 0
All Scale Minor Harmonic 1 0 1 1 0 1 0 1 0 0 0 1
Chord Major triad 1 0 0 0 1 0 0 1 0 0 0 0
Chord Major sixth 1 0 0 0 1 0 0 1 0 1 0 0
Chord Dominant seventh 1 0 0 0 1 0 0 1 0 0 1 0
Chord Major seventh 1 0 0 0 1 0 0 1 0 0 0 1
Chord Augmented triad 1 0 0 0 1 0 0 0 1 0 0 0
Chord Augmented seventh 1 0 0 0 1 0 0 0 1 0 1 0
Chord Minor triad 1 0 0 1 0 0 0 1 0 0 0 0
Chord Minor sixth 1 0 0 1 0 0 0 1 0 1 0 0
Chord Minor seventh 1 0 0 1 0 0 0 1 0 0 1 0
Chord Minor-major seventh 1 0 0 1 0 0 0 1 0 0 0 1
Chord Diminished triad 1 0 0 1 0 0 1 0 0 0 0 0
Chord Diminished seventh 1 0 0 1 0 0 1 0 0 1 0 0
Chord Half-diminished seventh 1 0 0 1 0 0 1 0 0 0 1 0
Chord Augmented major seventh 1 0 0 0 1 0 0 0 1 0 0 1
Chord Seven-six 1 0 0 0 1 0 0 1 0 0 1 0
Chord Mixed-third 1 0 0 1 1 0 0 1 0 0 0 0
Chord Suspended fourth 1 0 0 0 0 1 0 1 0 0 0 0
Chord Dominant ninth 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0
Chord Dominant eleventh 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0
Chord Dominant thirteenth 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0
Chord Seventh minor ninth 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0
Chord Seventh sharp ninth 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0
Chord Seventh augmented eleventh 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0
Chord Seventh diminished thirteenth 1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0
Chord Add nine 1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
Chord Add fourth 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
Chord Add sixth 1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Chord Six-nine 1 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
Chord Suspended second 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Chord Jazz sus 1 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0
Mode Ionian (I) 1 0 1 0 1 1 0 1 0 1 0 1
Mode Dorian (II) 1 0 1 1 0 1 0 1 0 1 1 0
Mode Phrygian (III) 1 1 0 1 0 1 0 1 1 0 1 0
Mode Lydian (IV) 1 0 1 0 1 0 1 1 0 1 0 1
Mode Mixolydian (V) 1 0 1 0 1 1 0 1 0 1 1 0
Mode Aeolian (VI) 1 0 1 1 0 1 0 1 1 0 1 0
Mode Locrian (VII) 1 1 0 1 0 1 1 0 1 0 1 0
Special Root only 1 0 0 0 0 0 0 0 0 0 0 0
Special Scale Chromatic 1 1 1 1 1 1 1 1 1 1 1 1

  Harmony Rule

See also: Rule Editor and See Rule Objects; Standard Rule Values.

Each Generator composes according to its defined Wotja Music Engine (WME) Harmony Rule. The Rule defines how likely it is that a note for that Generator will harmonize at a given musical interval in semitones with any note already composed (and in use by) by any *other* Generator.

Tip: If you are getting unexpected results, remember that the notes that can be chosen by the WME ALSO depend on the Scale Rule and Next Note Rule in use, and, as relevant, the settings of the "Harmonize?" and/or Harmonize with Me/Others checkboxes.

Harmony Rules can selected from the Standard Rule Values list (below) or can be a custom Rule you have created and named as you want.

Harmony Rules can be set at a Generator, Cell or Mix level - see the Rule Editor for details.

  • Harmony Rule elements: 24
    • These elements represent in semitones the possible harmonies available, these being: P1 (root), m2, M2, m3, M3, P4 (perfect 4th), b5, P5 (perfect 5th), m6, M6, m7, M7, P8 Oct (octave), m9, M9, m10, M10, P11 (perfect 11th), m125, P15 (perfect 13th), m14, M14, m15, M15.
    • Element values: % probability weighting
  • Note 1: For single note drones to work as intended the the harmony rule MUST include the octave element, too (e.g. Standard Rule "P1 and P8").
  • Note 2: When opening most older mixes that uses an "old" 12 element rule we automatically extend it by duplicating into a higher octave.
  • If harmonic distance is greater than 2 octaves, wrap around the rule.
  • Example:

    • Imagine that you have three Generators, called X, Y and Z.
    • Imagine that at some time in the Cell, the WME has already chosen to play note C for Generator X, and note G for Generator Y. At that time, the WME thinks about composing a note for Generator Z. It looks at the notes available for it to compose, and adjusts the probabilities of choosing each of those notes, by applying the Harmony Rule element values for each of those two composed notes which are active at time (i.e. notes C and G).
    • Harmonies are always calculated based on a rising direction up from the Cell Root. So, if the Cell Root is B and the WME is considering if it can compose note D for Generator Z, and it looks at the note it needs to harmonize with which is note C for Generator X; then Wotja figures-out the Harmony Rule values for Generator Z from the C of Generator X, up and through the Octave (i.e. E, F, F#, G, G# etc.).
Included Harmony Rules

The "Standard Rule" items below are included in Wotja. To select one of them see the Rule Editor > Toolbar Action button B > "Use Standard Rule Value" menu item.

Note: Rule objects can be referenced in Wotja Script.

Harmony Rule Name Element Values
Default .35 0 0 .65 .85 1 .65 .65 .65 .1 .1 0 .35
All (one octave) 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0
All (two octaves) 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
P1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
P1 and P8 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0

  Rhythm Rule

See also: Rule Editor and See Rule Objects; Standard Rule Values.

Each Generator composes note durations according a Rhythm Rule. The Rule defines how likely it is that a note for that Generator has a certain duration. This rule is combined with other factors, including the remaining length of time a Generator has left in the current bar (the WME tries to avoid having notes from non-Ambient Generators drifting across bar boundaries).

Rhythm Rules can selected from the Standard Rule Values list (below) or can be a custom Rule you have created and named as you want.

Rhythm Rules can be set at a Generator, Cell or Mix level - see the Rule Editor for details.

  • Rhythm Rule elements: 12
    • These elements represent the permitted note durations, these being: 1, 1/2., 1/2, 1/4., 1/4, 1/8., 1/8, Triplet, 1/16
    • Element values: % probability weighting
Included Rhythm Rules

The "Standard Rule" items below are included in Wotja. To select one of them see the Rule Editor > Toolbar Action button B > "Use Standard Rule Value" menu item.

Note: Rule objects can be referenced in Wotja Script.

Rhythm Rule Name Element Values
Default .1 .25 1 .5 .5 .25 .25 0 0
All But Dotted 1 1 1 0 1 0 1 1 1
Slow 1 1 1 0 1 0 0 0 0
Fast Syncopated 0 0 0 0 0 1 1 1 1
Fast Plain 0 0 0 0 0 0 1 0 1
Very Slow 1 0 .5 0 .25 0 0 0 0
Semiquavers Only 0 0 0 0 0 0 0 0 1
Middle 0 1 0 1 1 1 0 1 0
All 1 1 1 1 1 1 1 1 1

  Next Note Rule

See also: Rule Editor and See Rule Objects; Standard Rule Values.

Each Generator composes according to its defined Wotja Music Engine (WME) Next Note Rule. The Rule defines the distances in semitones available to be used for the next composed note.

Tip: If you are getting unexpected results, remember that the notes that can be chosen by the WME ALSO depend on the Scale Rule and Harmony Rule in use, and, as relevant, the settings of the "Harmonize?" and/or Harmonize with Me/Others checkboxes.

Next Note Rules can selected from the Standard Rule Values list (below) or can be a custom Rule you have created and named as you want.

Next Note Rules can be set at a Generator, Cell or Mix level - see the Rule Editor for details.

  • Next Note Rule elements: 24
    • These elements represent in semitones the distance a new note will be from the last composed note, these being: P1 (root), m2, M2, m3, M3, P4 (perfect 4th), b5, P5 (perfect 5th), m6, M6, m7, M7, P8 Oct (octave), m9, M9, m10, M10, P11 (perfect 11th), m125, P15 (perfect 13th), m14, M14, m15, M15
    • Element values: % probability weighting
  • Note: If opening a mix that uses an "old" 12 element rule, we automatically extend it by setting the "upper range" items to zero.
Included Next Note Rules

The "Standard Rule" items below are included in Wotja. To select one of them see the Rule Editor > Toolbar Action button B > "Use Standard Rule Value" menu item.

Note: Rule objects can be referenced in Wotja Script.

Next Note Rule Name Element Values
Default 0.25 1 1 .7 .3 .2 .1 .1 .1 .1 .05 .02 .05 0 0 0 0 0 0 0 0 0 0 0
All (one octave) 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0
All (two octaves) 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

  Harmonize?

The default value for this parameter is "Yes". What that means is that notes composed by this Generator will be considered for harmonization with other Generators (including itself, if it uses Chording).

If you do not want A) other Generators to harmonize with the notes composed by this Generator, or B) for it not to harmonize with its own notes when chording (i.e. within Chords), then set it to "No".

See also: Follower / Follower Strategy and Chording / Chording Strategy.

  Generator Root

Normally, you want your Generator to use the Cell Root. This is represented by the value ? However, sometimes you really want to force your Generator to use a different Root note; in which case, set the Generator Root to be whatever value suits.

This allows you to work-around the following sort of problem:

Imagine that you have a sampler, where you load-up a variety of loops against MIDI note C3 up to D3. To have your Cell drive this from a Rhythmic Generator such that the sounds you hear are not affected by changes to the Cell Root, you should set the Generator Root to e.g. C3 and your Generator will then be unaffected by changes to the Cell Root. Note that in this specific example, it would probably be a good idea to set the Harmonize? Flag to No.

  Generator - Phrasing

How do I edit these parameters? See the Generator: Main Editor.

Overview

The Phrasing parameters are used in certain situations by most of the generators with the exception of the TTM Generator, which has its own special Phrasing parameters.

Parameter Group - Phrasing

  Note Rest %

This value defaults to zero. If not zero, then the defined percentage of notes that would otherwise be played by your Generator will instead be treated as a rests of the same duration. This is very useful for making any Generator sound sparser. Give it a go: this parameter is very powerful, and applies to all Generator Types.

  Phrase Length

Set this to define the shortest possible sequence of notes that your Generator will compose in sequence. The Generator composes a sequence of notes, followed by a sequence of rests. The length of each sequence of notes is governed by this and the Phrase Length Range parameter.

  Phrase Length Range

This value defines the upper limit to the number of notes that your Generator will compose in sequence. For example, if the Phrase Length is 3, and the Phrase Length Range is 25, then the minimum phrase will be 3 notes, and the maximum phrase length will be (3+25) = 28 notes.

  Phrase Gaps

Set this to define the shortest possible sequence of rests that your Generator will compose. Your Generator composes a sequence of notes, followed by a sequence of rests. The length of each sequence of rests is governed by this and the Phrase Gaps Range parameter.

  Phrase Gaps Range

This value defines the upper limit to the number of rests that your Generator will compose in sequence. For example, if the Phrase Gaps is 3, and the Phrase Gaps Range is 25, then the minimum phrase will be 3 rests, and the maximum phrase length will be (3+25) = 28 rests.

  Generator - Chording

How do I edit these parameters? See the Generator: Main Editor.

Overview

The Chording parameters let you configure any Generator Type to generate chords automatically.

In outline, use the Depth and Depth Range values to define the "Chording Depth"; which is the number of notes that will play at any one time for a given Generator. The first note in any chord is composed according to the normal mechanism for the Generator Type; additional notes that cause a chord to be built-up may be generated automatically according to the Chording parameters.

Parameter Group - Chording

  Depth

Specify the minimum Depth of chord that you want your Generator to play with. A value of 1 will mean that the Generator will not chord (unless the Depth Range parameter is greater than zero).

The Depth defines the number of notes that are played by the Generator at any one time.

  Depth Range

Specify the relative maximum Depth of chord that you want your Generator to play with. A value of 0 means that whenever the Generator is played, it will play a number of notes equal to the Depth. A value of one or more means that whenever the Generator is played, it will play a number of notes equal to a randomly selected value between the Depth and the Depth plus the Depth Range.

  Percent

This parameter tells the Generator the percentage chance that it should actually emit any given note in the chord (after the first note, of course!). Set to 100 if you want the Chording Generator to always emit a note for every note played by the Generator. Set to a smaller value if you want to thin-out the notes played within the chord. This allows you to create chords of varying depth; sometimes dense, sometimes thin.

  Strategy

This parameter tells the Generator what it should do when it decides the pitch to use for a note generated within a chord.

Note: The setting of the Rule Harmonize? flag is important for this parameter. If set to "Yes" then notes will only be generated that are available in the Scale Rule and Next Note Rule AND that harmonize according to the relevant Harmony Rule. If set to "No" then that is not enforced, something that is particularly important when using Semitone Shift, below. See also Cell Harmonize With Me and Cell Harmonize With Others which govern how Cells compose with each other.

The available values are:

  • Chordal Harmony

    This causes the Generator's chord notes to be selected according to the currently defined Scale, Harmony and Next Note Rules.

  • Interval Within Scale Rule

    This causes the Generator's chord note to be selected offset from the followed note, such they it is at an interval within the Scale Rule beyond the previous note in the chord, defined as a value randomly selected between the Shift / Interval and Shift / Interval plus Shift / Interval Range values.

    For example, if these values are 1 and 2 respectively, then each time a note is chosen within the chord, it will be between 1 and (1+2)=3 Scale Rule intervals up from the previous note in the chord. It is important to understand that this refers to the non-zeroed elements in the current Scale Rule, in other words only those notes that are available within the Scale Rule.

    So, in our example, if we were using a Major Scale Rule, and if the first note in the chord were C4 (Middle C), and if the Generator chose a value of 2 as its random value; then the played note would be E4 (Middle C), which is the second note up from Middle C within the Major Scale Rule.

  • Semitone Shift

    This causes the the Generator's chord note to be selected offset up from the previous note in the chord, such it is offset from the previous chord note by a number of semitones which is a value randomly selected between the Shift / Interval and Shift / Interval plus Shift / Interval Range values. A note chosen in this way ignores the current Scale Rule.

    For example, if these values are 1 and 2 respectively, then each time a note is chosen, it will be between 1 and (1+2)=3 semitones up from the previous note in the chord.

    So, in our example, if we were using a Major Scale Rule, and if the previous note in the chord were C4 (Middle C), and if the Generator chose a value of 3 as its random value; then the played note would be D#4 (Middle D#), which is the third semitone note up from Middle C. This value is used even though it is not in the current scale rule, provided of course the "Harmonize?" flag noted above is set to "No". If you want to achieve something similar but with the "Harmonize?" flag set to "Yes", then for the shifted note(s) required, use a Scale Rule, Harmony Rule and Next Note Rule (for the relevant Generator) that allow those note(s) to be chosen.

  Units

You define the Unit of Measure by which the Delay and Delay Range parameters are interpreted. This may be one of the following values:

  • Seconds (thousandths of a)

    The parameters including Duration are all interpreted as being in thousandths of a second (i.e. Milliseconds). So, a Duration value of 1000 means one second.

  • Beats (60ths of a)

    The parameters including Duration are all interpreted as being in 60ths of a beat. In the WME a Beat is defined as being one crotchet; you get 3 beats in a bar of 4:4 music. So, a Duration value of 60 means one beat. A Duration value of 30 means a quaver. A Duration value of 20 means a triplet.  A Duration value of 15 means a semi-quaver.  A Duration value of 240 means 4 beats (which is a full bar if the Cell Meter is 4:4).

  • Quantized Beats (60ths of a)

    This works the same way as Beats (60ths of a) except that where the Delay has a special value of 10, 15 or 20; the delay is interpreted in a special way that is very useful for some breakbeat-based music. Specifically, in this case, the calculated value for the delay is rounded to the nearest sub-multiple of the Delay value. So, for example, if the engine calculates a value of 43, and if Delay is 20, the used value for the delay is actually 40 (which is the nearest multiple of 20).

  Delay

This defines the minimum delay after which the Chording Generator will play a followed note. The actual value chosen for each note is a value between Delay, and Delay plus the Delay Range. Each and every note composed for this Chording Generator will have a note whose delay is separately calculated.

  Delay Range

This is combined with the Delay parameter, to determine the delay after which the Chording Generator will play a followed note. The actual value chosen for each note is a value between Delay, and Delay plus the Delay Range. Each and every note composed for this Chording Generator will have a note whose delay is separately calculated.

  Shift/Interval

Used when the Strategy is either Interval Within Scale Rule or Semitone Shift.

This causes the Chording Generator to choose notes which are offset in some way from the followed note, according to the Strategy; where the offset is defined as a value randomly selected between the Shift / Interval and Shift / Interval plus Shift / Interval Range values.

 Shift/Interval Range

This represents the "Shift/Interval Range", and is used when the Strategy is either Interval Within Scale Rule or Semitone Shift.

This causes the Chording Generator to choose notes which are offset in some way from the followed note, according to the Strategy; where the offset is defined as a value randomly selected between the Shift / Interval and Shift / Interval plus Shift / Interval Range values.

  Pitch Offset

This parameter defines the amount that the pitch of each note in the chord should be offset, in semitones, from the previous note in the chord; the actual value selected might be overridden according to the various rules that apply to the Generator, but in general, this parameter allows you to "shape" a chord to have a given range of pitch values. In combination with the Delay-related parameters, this allows you to create some very interesting arpeggiation effects.

For example, a value of +12 would tend to space each note in the chord by a range of 12 semitones (which is one octave), with each subsequent value in the chord being higher in pitch that the previous.

For example, a value of -12 would tend to space each note in the chord by a range of 12 semitones (which is one octave), with each subsequent value in the chord being lower in pitch that the previous.

  Velocity Factor

This parameter allows you to specify the range of relative velocities for the notes in a chord. Each subsequent note in the chord is the defined percentage louder (for a positive value) or quieter (for a negative value) than the previous note in the chord. A value of zero means that all notes in the chord are played with the same velocity.

The Generator velocity envelope values are ignored when this parameter is applied.

For example, a value of -30 would tell the Generator to generate its chords such that each auto-chorded note is 30% quieter than each preceding note in the chord; giving a noticeable tailing-off effect.

  Generator - Articulation

How do I edit these parameters? See the Generator: Main Editor.

Overview

Important: A Generator's Articulation parameters apply to any/all notes it composes, be that via e.g. generative parameters, patterns or text-to-music.

The Generator Articulation parameters define the percentage of the duration of composed note, i.e. they determine how long a composed note actually plays for. A long time ago the WME used to compose notes to be played "Legato" (no gap between one note and the next) - this parameter allows you to play them with a shorter duration, e.g. staccato.

Parameter Group - Articulation

  Minimum

1 is very staccato and 100 is legato (the new default).

  Range

Max articulation is the value of Articulation (min) + Articulation range, and is used in combination with the variation values (below).

  Change

The minimum variation in staccato between notes, c.f. other parameters that adopt the min + range approach.

  Change Range

The range in variation of staccato between the notes (in addition to the min).

  Generator - Envelopes

How do I edit these parameters? See the Generator: Envelope Editor.

Overview

See also the Envelope Editor.

Generator Envelopes are supported for a number of parameters. Envelopes work in the same way for all of these, so they are all grouped here.

Each envelope is a collection of up to 100 data points. A Cell starts with the value at the left side of the envelope, and as it progresses, eventually ends up with the value from the far right of the envelope.

You can draw direct on to the envelope with your mouse.

Alternatively, you may use one of the various powerful envelope editing tools that we have made available to you.

To use the envelope editing tools:
- Right-click (win) or ctrl-click (mac) on the envelope tool
- Select the option you want. e.g. random, curve up etc.
- Select the range using the mouse...
- Then: either press space or enter, or select pop-up envelope tool to apply to the selected range.
- Select freehand mode to return to the normal click-to-paint mode.

Parameter Group - Envelopes

  Volume (User Envelope 1)

This envelope has a Default MIDI CC value of 7, which is the Volume controller CC.

This allows you to define an envelope that is used to emit a MIDI CC of your choice.

  • MIDI CC
    • Use this to define the MIDI CC that you want to be emitted by this envelope. The default value is 7, which is the Volume controller.
  • Enabled?
    • Use this to turn your envelope on or off.
  • Envelope

  Pan (User Envelope 2)

This envelope has a Default MIDI CC value of 10, which is the Pan controller CC.

This allows you to define an envelope that is used to emit a MIDI CC of your choice.

  • MIDI CC
    • Use this to define the MIDI CC that you want to be emitted by this envelope.
  • Enabled?
    • Use this to turn your envelope on or off.
  • Envelope

  Micro Vol Env (Envelope 1)

This is not actually an envelope, but it provides fine variation in the values generated by the User Envelope 1 above. Any value generated by this micro controller is added to the User Envelope 1 value, to give fine variation in any such envelope.

  • Range
    • The maximum amount of micro change in the User Envelope 1 that can be applied. Zero means off (which is the default).
  • Change
    • The amount of micro change in the User Envelope that is applied by Wotja between “update” periods. The value drifts between zero (off) and the Range, changing by plus or minus the Change value each time.
  • Update
    • The time in milliseconds between updates to the Micro User Envelope value. The actual value chosen is selected randomly each time, to be a value somewhere between Update and Update Range.
  • Update Range
    • The upper limit of time between updates to the Micro User Envelope value. The actual value chosen is between Update and Update Range.

  Velocity Envelope

This allows you to define how the Velocity level is changed automatically for your Generator throughout playback of the Cell. The velocity defines relatively how loud each note is.

The actual Velocity value used at any point in the Cell is calculated as being a value somewhere in the range from Velocity, to Velocity plus the value of the Velocity Range envelope.

  Velocity Range Envelope

The value in this envelope is added to the value in the Velocity Envelope.

  Velocity Change Envelope

The velocity for any composed note can change by a value between Velocity Change Envelope value (VCE) and the VCE plus the Velocity Change Range Envelope value.

  Velocity Change Range Envelope

The value in this envelope is added to the value in the Velocity Change Envelope.

  Generator - Controllers

How do I edit these parameters? See the Generator: Main Editor.

Overview

The Generator Controllers parameters define some of the key MIDI controller values that are emitted by the Generator.

Parameter Group - Controllers

  Damper/Hold (64)

Set this value to other than the default of "-1", if you want to emit a Damper/Hold MIDI controller (MIDI CC 64) at the specified value on this Generator's MIDI line. This is a funny MIDI controller, with only two states; in that a value of 64 or greater activates Damper/Hold, and any value of 63 or less means to turn it off! Leave this value at the default of "-1" if you don't want the Generator to emit any information for this MIDI controller.

  Harmonic Content (71)

Set this value to other than the default of "-1", if you want to emit a Harmonic Content MIDI controller (MIDI CC 71) at the specified value on this Generator's MIDI line. Leave this value at the default of "-1" if you don't want the Generator to emit any information for this MIDI controller.

  Reverb (91)

Set this value to other than the default of "-1", if you want to emit a Reverb MIDI controller (MIDI CC 91) at the specified value on this Generator's MIDI line. Leave this value at the default of "-1" if you don't want the Generator to emit any information for this MIDI controller.

  Chorus (93)

Set this value to other than the default of "-1", if you want to emit a Chorus MIDI controller (MIDI CC 93) at the specified value on this Generator's MIDI line. Leave this value at the default of "-1" if you don't want the Generator to emit any information for this MIDI controller.

  Damper Release

If you are using Damper/Hold (64), then you will find that your notes can start building-up and never decay! In which case, set the Damper Release parameter to "Yes", which tells the Generator to momentarily release the damper just before the end of every bar. This prevents build-up of notes and generally sounds wonderful.

  Portamento (65)

Set this value to other than the default of "-1", if you want to emit a Portamento MIDI controller (MIDI CC 65) at the specified value on this Generator's MIDI line. Leave this value at the default of "-1" if you don't want the Generator to emit any information for this MIDI controller.

  MIDI Channel Sharing

The default value of "Yes" means that this Generator can share its MIDI channel with other Generators. This is only considered if you have defined the MIDI Channel parameter for a Generator to be 0.

  Generator - Micro Controllers

How do I edit these parameters? See the Generator: Main Editor.

Overview

The Generator Microcontroller parameters (there are two - User C1 and User C2) allow you to define very powerful Microcontrollers to be associated with your Generator.

Microcontrollers are very powerful and you can think of them as built-in, highly configurable MIDI event generators. They can either synchronize to the tempo of your Cell, or you can let them run free-floating. Experiment with them – they can do a huge amount to make your music interesting and dynamic.

Tip: if you want to synchronize your Microcontroller to the time-base, so that your MIDI controller is synchronized to bar boundaries in your music, you'll need to use the Beat Cycle Length parameter.

Parameter Group - Micro Controllers

  MIDI CC

This tells your Generator which MIDI controller (also referred to as the MIDI CC) to emit for this microcontroller, e.g. 11. When the Microcontroller is active, the Generator will emit values for this MIDI controller that change at various times, with behavior that you define using the various parameters in this Parameter.

 Mode

The Mode defines the shape of the waveform that the Generator will use to shape this waveform.

The Mode may be one of the following values:

  • -1 – Off
    • The microcontroller is off. This is the default value.
  • 0 - Random Drift
    • The microcontroller will drift between the Minimum and Minimum plus Range, changing at times specified by the Update and Update Range parameters, by an amount between the Change and Change plus Change Range parameters.
  • 1 - LFO (Min-Max-Min)
    • A triangular waveform, that starts at the minimum value, works up to the maximum value, and works back to the minimum value.
  • 2 - LFO (Max-Min-Max)
    • A triangular waveform, that starts at the maximum value, works down to the minimum value, and works back to the maximum value.
  • 3 - Sawtooth (Min-Max)
    • A sawtooth waveform, that starts at the minimum value, works up to the maximum value, and then starts again from the minimum value.
  • 4 - Sawtooth (Max-Min)
    • A sawtooth waveform, that starts at the maximum value, works down to the minimum value, and then starts again from the maximum value.

  Minimum

Defines the minimum value that may be emitted by the Microcontroller.

  Range

The microcontroller will emit a value between the Minimum and Minimum plus Range values.

So for example, if you define Minimum to be 20, and Range to be 100, the value that is emitted will be in the range 20 to 120 inclusive.

  Change

Defines the amount by which the microcontroller will change, every time it is allowed to change. Typically set to a value of 1. If this value is set to 0, the Microcontroller will change only if the Change Range is greater than or equal to 1.

  Change Range

Defines the upper limit to the amount by which the microcontroller will change, every time it is allowed to change. Typically set to a value of 1. If this value is set to 0, the Microcontroller will change only if the Change Range is greater than or equal to 1.

For example, if you define Change to be 1, and Change Range to be 3, the value that is emitted will vary by a value between 1 and (3+1)=4 each time.

  Update

Defines the minimum time in milliseconds between changes in the emitted Microcontroller value. The system might not be able to emit changes as quickly as you want, if you set a very small value! If you don't want changes to happen very often, then use a large value.

Ignored if Beat Cycle Length is non-zero.

  Update Range

Defines the upper limit in the time in milliseconds between changes in the emitted Microcontroller value. Use this parameter to apply some uncertainty in when the changes will occur.

For example, if you define Update to be 1000, and Update Range to be 500, the value that is emitted will change every 1000 to 1500 milliseconds (or in other words, every 1 to 1.5 seconds).

Ignored if Beat Cycle Length is non-zero.

  Update Units

You define the Unit of Measure by which the Update and Update Range parameters are interpreted. This may be one of the following values:

  • Seconds (thousandths of a)
    • The Update and Update Range are interpreted as being in thousandths of a second (i.e. Milliseconds). So, a Update value of 1000 means one second.
  • Full seconds
    • The Update and Update Range are interpreted as being in seconds. So, a Update value of 10 means ten seconds.

  Beat Cycle Length

This parameter is critical for generating effects which synchronize with the bar timing of your Generator. If you want to achieve an effect like a filter-sweep that synchronizes to your bar boundary, then this is the parameter to use.

Here are some of the values you could use.

Note in the WME a Beat is defined as being one crotchet; you get 4 beats in a bar of 4:4 music. So, a Duration value of 60 means one beat. A Duration value of 30 means a quaver. A Duration value of 20 means a triplet. A Duration value of 15 means a semi-quaver. A Duration value of 240 means 4 beats (which is a full bar if the Cell Meter is 4:4).

  Phase Shift %

Use this parameter if you want to start the microcontroller from a start-point other than at the very start of its cycle.

  Generator - Micro Delay

How do I edit these parameters? See the Generator: Main Editor.

Overview

The Generator Micro Note Delay parameters provide fine variation in the times of Note events generated by a Generator. This can be used to give a Generator more “human” feel.

Parameter Group - Micro Note Delay

  Delay Range

The maximum amount of delay generated by micro note delay changes, that may be applied to note events. Zero means off (which is the default).

  Delay Change

The amount of change in the micro delay that is applied by Wotja between note on/off events. The value drifts between zero (off) and the Delay Range, changing by plus or minus the Delay Change value each time.

  Delay Offset

Fixed amount of offset note delay to apply, used only when the Micro Note Delay controller is in use. The default value is zero.

  Generator - Micro Pitch

How do I edit these parameters? See the Generator: Main Editor.

Overview

The Generator Micro Pitch parameters provide fine variation through use of the MIDI Pitch Wheel controller.

Tip: This is not normally used on MIDI line 10, which is the drum/percussion line!

Parameter Group - Micro Pitch

  Bend Sensitivity

A value from 0 to 24, meaning how many semitones are controlled by the full available range of Micro Pitch parameters. The default value is 2, which represents two semitones.

  Pitch Bend Offset

Fixed amount of pitch-bend to apply on this MIDI line, used to tune/de-tune an instrument.

The default value is zero, which means to apply no offset pitch bend.

From -8192 to +8191; which covers a range of pitch bend defined by the Bend Sensitivity parameter.

  Pitch Range

The maximum amount of micro pitch change that can be applied. Zero means off (which is the default). The maximum value allowed is 8191. The value chosen is added to the pitch bend offset.

  Pitch Change

The amount of change in Micro Pitch that is applied by Wotja between “update” periods. The value drifts between zero (off) and the Pitch Range, changing by plus or minus the Pitch Change value each time.

  Pitch Update

The time in milliseconds between updates to the pitch controller. The actual value chosen is selected randomly each time, to be a value somewhere between Pitch Update and Update Range.

  Pitch Update Range

The upper limit of time between updates to the pitch controller. The actual value chosen is between Pitch Update and Update Range.

  Generator - Note to MIDI CC

How do I edit these parameters? See the Generator: Main Editor.

Overview

Normally, Generators compose and emit MIDI note events. The Generator Note to MIDI CC Mapping parameters allow you to tell a Generator to emit MIDI controller data instead of MIDI note events.

Why would you want to do this? Well, it lets you use a Generator as a very powerful generative MIDI event generator with a huge range of potential applications.

Parameter Group - Note to MIDI CC

  CC for Note On?

If you want this Generator to emit a MIDI CC instead of note on/off events, set this parameter to Yes.

  Note On CC

If you have set CC for Note On? to Yes, then instead of emitting a note on event, the Generator will emit the specified MIDI CC, with a value equal to the composed pitch.

  CC For Velocity?

If you want this Generator to emit a MIDI CC proportionate to the Velocity of the composed note (in addition to any controller defined for Note On CC), then set this parameter to Yes.

  Velocity CC

If you have set CC for Velocity? to Yes, then the Generator will (in addition to the Note On CC value) emit the specified MIDI CC, with a value equal to the composed velocity.

  CC for Note Off?

If you want this Generator to emit a MIDI CC when a note off occurs, set this parameter to Yes. This applies only if CC for Note On? Is set to Yes.

  Note Off CC

If you have set CC for Note Off? to Yes, then instead of emitting a note off event, the Generator will emit the specified MIDI CC, with a value equal to the composed pitch of the stopped note.

  Generator - Scripting

The Generator Scripting parameter allows your Generator to use Intermorphic Wotja Script. For full details please refer to the Wotja Script Engine Guide.

  Generator - Comments

How do I edit these parameters? See the Generator: Main Editor.

Overview

This Generator Comments parameters allow you to store comments in your Generator, in the form of copyright information and any notes you might want to make for future reference.

Parameter Group - Comment

Enter the Copyright information you might want to record for the Generator. In the case of a Generator from a template pack, this might contain a copyright notice associated with that template.

  Notes

Enter any detailed notes you might want to make about this Generator for future reference.

Cell - Rules

How do I edit these parameters? See the Cell: Properties.

Overview

The Cell Rules parameters allow you to define the default Rules used by the Generators in the selected Cell. Each Cell can have different Cell Rules.

Scale Rules

Set this to define the default Scale Rule to use when the Cell plays. Individual Generators are allowed to override this setting if they so wish.

Harmony Rules

Set this to define the default Harmony Rule to use when the Cell plays. Individual Generators are allowed to override this setting if they so wish.

Next Note Rules

Set this to define the default Next Note Rule to use when the Cell plays. Individual Generators are allowed to override this setting if they so wish.

Cell - Meter

How do I edit these parameters? See the Cell: Properties.

Overview

The Cell Meter parameters define the Meter to be used by the Cell, such 4:4 or 3:4 or 6:8. A Generator will generally use this Meter, but the Meter value to be used for each Generator may actually override this setting. This approach allows Generators to be configured to work with a completely different Meter, which can be used for interesting polyphonic effects.

Cell - Scripts

The Cell Scripting parameter allows a Cell to use Intermorphic Wotja Script. For full details please refer to the Wotja Script Engine Guide.

Cell Info

How do I edit these parameters? See the Cell: Properties.

Overview

The Cell Info Object allows you to define some book-keeping parameters for your Cell. None of these parameters affect the way that your Cell sounds. However, they are useful if you you wish to later export the Cell as a new Template because when you load that new Template it will show the values set here.

Template Title (editable)

The title of the Template that was first added to the Cell. If you change the title the changed title is not shown in the Cell, only here.

Template Author (editable)

The author of your Template.

Template Notes (editable)

Any notes you want to include for your Template.

File Path (non-editable)

This shows file path to the Pak that the Template is in.

Content Duration (non-editable)

This is non-editable and shows the duration of a WAV file or MIDI file (if used, and which is why it is shown) or 8:53:20 for generative content.

Mix Settings

How do I edit these parameters? See the Mix: Properties.

Mix Tempo

The Mix Tempo allows you to define the tempo for your mix.

Mix Root

The Mix Root parameter allows you to define the Root Pitch to use for the mix. For example, if you are using a Major Scale Rule, then set this value to be C for your Cell to play in the key of C Major.

Ramp Up

Sets how long it takes for the file volume to ramp up once the file has started to play.

Playlist Duration

Sets how long the mix file will play for in the Playlist.

Playlist Duration Range

Sets a range on how long the mix file will play for in the Playlist.

Playlist Ramp Down

Sets how long it takes for the mix file volume to ramp down before play moves to the next mix file in the Playlist.

Wotja 22 Audio Engine

Wotja Audio Engine icon

The Wotja Audio Engine ("WAE") is a MIDI-driven audio/sound engine. It comprises a framework of sound synthesis and fx technologies with associated design interfaces and goes beyond the traditional limitations of MIDI as it supports control of a number of essential fx units including Reverb, Delay, Distortion, Filtering etc.

The editors for the WAE are to be found in the Synth & FX Editor.

In the toolbar for each Unit (on the left side), there is a Help Button. Tap this to display the relevant section of the User Guide in a pop-up window.

WAE Units

  Macro Oscillator 1 (TG)

Tone Generator - Macro Oscillator 1 (Audio-rate)

Macro Oscillator 1 - Tone Generator
Click image for large

This very powerful and complex modular synth unit is a port of the popular open-source "Braids" sound generator from Mutable Instruments (the github is here).

For information on its capabilities see the Mutable Instruments Documentation and/or PDF quickstart. You may also wish to look at the excellent http://www.vo1t.com/Euro/BraidsIllustrated1.8.pdf.

The best way to experiment with it is to load one of the many "MO1-Lead" patches that can be found from the Presets button.

As with any other WAE TG Unit it is a sound source for notes generated by the WME. This means it can be used polyphonically (you can set the polyphony required via the top Poly button in the Synth & FX Editor).

It can also be modulated via other control-rate units (LFO and Envelope modulators are shown in the screenshot) and can be used in a WAE Sound Network in combination with other TG and Control units.

  Macro Oscillator 1 - Tone Generator (Audio-rate)

  • Bypass?: When this is checked the unit is bypassed.
  • Shape: Choose from 47 different algorithms.
  • Timbre: Sets a value for the algo's timbre.
  • Color.: Sets a value for the algo's color.
  • Level: Sets the unit's output level.
  • Pan: Sets the unit's stereo position.

Tuning

  • Octave offset: This allows you to specify the octave offset from the voice's pitch.
  • Fine: This allows you fine control over the pitch.
  • Coarse: This allows you coarse control over the pitch.

Edit Envelope

The MO1 has its own integral envelope unit with the same capabilities as the Ctrl Envelope Unit.

  • Delay: The length of time it takes after a note on event occurs for the voice, before the volume envelope starts to rise-up from zero to its Attack level.
  • Attack: The length of time it takes after the delay time has passed for the voice, to rise-up from zero to its Attack level.
  • Atk Level (Advanced): The target level for the attack stage of the envelope, as the envelope rises from its initial value of zero.
  • Hold: The length of time it takes after the attack level is reached, before the envelope starts to decay down to the Sustain Level.
  • Decay: The length of time it takes for the envelope to decay down from the Attack Level, down to the Sustain Level.
  • Sustain: The level at which the note will play, once all of the Decay, Attack, and Hold periods have completed.
  • Post Attack (Advanced): The length of time it takes after the note stop event occurs, for the envelope to move from the sustain level to the post-attack level
  • Pst Atk Level (Advanced): The target level for the post-attack stage of the envelope, as the envelope moves from its sustain level.
  • Post Hold (Advanced): The length of time it takes after the post attack level is reached, before the envelope starts to decay down to zero.
  • Release: This time defines the time it takes for the Voice to respond to a note off event, in terms of how long it takes to decay from the Post-Attack Level to a level of zero.

  DSynth (TG)

Tone Generator - DSynth (Audio-rate)

DSynth - Tone Generator
Click image for large

The "DSynth" tone generator unit can be used either as a melodic tone generator or as a Drum/Percussion Synthesizer for a range of drum/percussion related sounds. You can shift the pitch of the generated sound away from the notes that would otherwise be played, using the Tuning controls.

The unit works by combining two Oscillators which cross-modulate each other's oscillation frequency. Each oscillator has its own ADSR envelope which is used primarily to modulate the volume of the oscillator, but which can also be used to modulate the frequency of the oscillator!

The output of the two oscillators is merged with the output from a filtered noise generator (the bottom block of parameters) which also has its own ADSR envelope. The net effect is a unit which can create a wide array of percussive and melodic sounds. You can use the Export and Import buttons at the top of the unit to export and import DSynth settings to/ from the clipboard.

Tip: Use an audio junction unit to add together sounds from multiple tone generators to make even richer sounds!

  DSynth - Tone Generator (Audio-rate)

  • Bypass?: When this is checked the unit is bypassed.
  • Level: Sets the unit's output level.
  • Pan: Sets the unit's stereo position.
  • Notes?: This toggle determines whether the unit will actually use the composed note frequency to override the frequency of Oscillator 1. The default is that the checkbox is clear : i.e. the system will not use the composed note frequency for the unit. Tip : for percussive sounds, you might like to try clearing this checkbox!
  • Click?: Use this toggle to add an initial transient when the notes are triggered; very useful for percussive sounds.

Oscillator 1 and Oscillator 2 Parameters

  • Frequency: The frequency of oscillator 1 or 2.
  • OMod: "Oscillator Modulation" - The amount of modulation provided by the other oscillator, for oscillator 1 or 2.
  • EMod: "Envelope Modulation" - the amount of the envelope which should also be used to modulate the frequency of oscillator 1 or 2. If this is set to 0, then the ADSR envelope is used purely to modulate the volume of the oscillator.
  • Delay: The length of time it takes after a note event occurs for the voice, before the envelope starts to rise-up from zero to its Attack level.
  • Attack: The length of time it takes after the delay time has passed for the voice, for the envelope to rise-up from zero to its Attack level.
  • A Level: The target Attack Level for the attack stage of the envelope, as the envelope rises from its initial value of zero.
  • Decay: The length of time it takes for the envelope to decay down from the Attack Level, down to the Sustain Level of zero.
  • Rate: A measure of the curvature of the Decay, down to the sustain level of zero. A value of 0 gives a linear decay, and increasing values giving an increasing level of curvature - resulting in a sound that is more "plucked" in nature.

Filter/Q Parameters

  • Type List: The filter type to use: includes Low Pass, High Pass and Band Pass.
  • Frequency: The frequency of the filter.
  • Q: the amount of accentuation of the filter, 1.0 is high, 0.0 is no effect at all.
  • EMod: "Envelope Modulation" - the amount of the envelope which should also be used to modulate the filter frequency. If this is set to 0, then the ADSR envelope is used purely to modulate the volume of the filtered noise..
  • Delay: The length of time it takes after a note event occurs for the voice, before the envelope starts to rise-up from zero to its Attack level.
  • Attack: The length of time it takes after the delay time has passed for the voice, for the envelope to rise-up from zero to its Attack level.
  • A Level: The target Attack Level for the attack stage of the envelope, as the envelope rises from its initial value of zero. Tip: A value of zero is very good for melodic sounds; set to a higher value for more percussive sounds.
  • Decay : The length of time it takes for the envelope to decay down from the Attack Level, down to the Sustain Level of zero.
  • Rate: A measure of the curvature of the Decay, down to the sustain level of zero. A value of 0 gives a linear decay, and increasing values giving an increasing level of curvature - resulting in a sound that is more "plucked" in nature.

Tuning

  • Octave offset: This allows you to specify the the octave offset from the voice's pitch.
  • Semitone: This allows you to select the semitone offset from the voice's pitch (taking into account the octave offset above).
  • Micro: This allows you to specify the microtonal offset in order to 'detune' the tone. -100 is the equivalent to a semitone down, and +100 is a semitone up.

  Osc (TG)

Tone Generator - Osc (Audio-rate)

Osc - Tone Generator
Click image for large

This unit lets you create a range of waveforms, which are driven by MIDI pitch (via the "Pitch" checkbox); in which case, they are flexible, efficient MIDI tone generators.

Tip: You can use an audio junction unit to add together sounds from multiple tone generators to make even richer sounds!

Tip: The bottom linked Envelope Unit is there to help you shape your sound.

  Osc - Tone Generator (Audio-rate)

  • Bypass?: When this is checked the unit is bypassed.
  • Amplitude: Sets the amplitude of the generated waveform.
  • Pan: Sets the unit's stereo position.
  • Frequency: This controls the frequency of the unit, in Hertz (Hz, cycles per second).
  • Portamento: This defines the amount of "pitch slide" (Portamento) from one note to the next; used when "Use Midi Pitch?" is selected. Basically a measure of the exponential approach to the pitch of the next note. Measured from 0 (minimum effect, an instantaneous change to the next note pitch) to 100 (maximum exponential approach to the target pitch).

Type

  • Oscillator Type: This list includes Sine, Saw left, Saw right, Triangle, Square, STS (Saw, Triangle, Square) and Random. Change the Oscillator Type to dramatically change the sound of your Tone Generator.
    • Sine produces a smooth waveform with no other harmonics.
    • Saw Left and Saw Right produce waves that look like a saw-tooth close up. The either slope to the left or to the right, but sound identical (they are both provided, as combining these with other waveforms provide interesting effects due to their different phasing!).
    • Triangle sounds not quite as harsh as the saw-tooth but has more harmonics than the sine.
    • Square produces a 'square' looking wave and sounds rougher than either the sine or saw-tooth waves. With the square wave you have the option of specifying the ratio of the up portion of the wave to the down portion. At either extreme, the square wave becomes more like a pulse wave, giving a 'pulsing' sound at lower pitches.
    • STS stands for 'Saw, Triangle, Square' because it is a hybrid between these three wave types. By varying the three parameters associated with it, the wave shape can be 'morphed' between the above three extremes. In effect, this waves covers all the preceding wave shapes, with the exception of the sine wave.
    • Random produces white noise between Min and Max, also affected by the Amplitude. These values are produced irrespective of the pitch of the tone generator; and do not use the envelope of the tone generator. Random signals are particularly interesting when fed into filter effect units!
  • Min: This defines the minimum value that the generated LFO waveform can have.
  • Max: This defines the maximum value that the generated LFO waveform can have.
  • Phase: useful for slow oscillators (e.g. 0.2 Hz) - determines the start point of the oscillator.
  • Pitch: Select this checkbox if you want the MIDI pitch to determine the frequency of this tone generator. Use only for audio-rate units.
  • Sync: Select this checkbox if you want the LFO to use the envelope to modulate the amplitude of the tone generator, or your own specific envelope settings that you can edit by pressing the "Edit Envelope" button. This only has any effect in Modular Synth networks, of course!
  • Ring:TBA.

  Particle (TG)

Tone Generator - Particle (Audio-rate)

Particle - Tone Generator
Click image for large

DEPRECATED

This effect unit is an example of Granular Synthesis, which although is often used to do time stretching of samples, is used for a completely different purpose here - that of creating rich layered sounds ranging from ambient forms to plopping sounds and twinkling chimes. The particle system incorporates octave, semitone and micro tonal offsets. It also has a checkbox that allows it to use the default volume envelope for amplitude shaping.

The Particle System synthesizes tones from a number of sine waves. This is really granular "additive synthesis". The unit works by streaming-out grains up to a maximum of 20 at any one time. These are randomly offset from each other to blend well. When the effect decides to generate a new grain, it takes its information from the dialog values. If the grains are reasonably large then the harmonics come in and out giving a full sound.

Tip: You can use an audio junction unit to add together sounds from multiple tone generators to make even richer sounds!

  Particle - Tone Generator (Audio-rate)

  • Bypass?: When this is checked the unit is bypassed.
  • Frequency: This controls the frequency of the internal high-frequency LFO, which is is used to modulate the "harmonics", giving a tone that is rich with harmonic information. Only used if "Use Notes?" is not set.
  • Harmonics: Defines the range of multiples of the selected frequency present in the Particle System's output. What this means in plain English :) is that if you (say) have a frequency of 400Hz, and you define the Harmonic to be 3, then you may find grains with frequencies of 400, 800, and 1200 Hz in the generated waveform. The higher this value, the richer the harmonic output!
  • Velocity: this scrollbar controls the change of frequency within any one grain. Try moving this a small bit and you will find the tones start to dive or soar - good for creating horror effects!
  • Elements: The "number of elements" - the maximum number of grains present at any one time. The higher this value, the richer the output!

Envelope

  • Amplitude: Defines the overall amplitude of the generated waveform.
  • Attack / Sustain / Decay / Pause: Changing these settings modifies an internal envelope generator, which is used to alter the shape and duration of the grains. It is easy to get twinkling effects just by making the attack small (say 1) and the decay longer (say 200). The pause determines the gap between grains. Modulating harmonic, attack, and pan position gives a nice full sound that alternates between twinkling and blending.

  Wavetable (TG)

Tone Generator - Wavetable (Audio-rate)

Wavetable - Tone Generator
Click image for large

The Wavetable Unit is the unit that uses Soundfonts/SF2. It is also what you use if you want to use your own SF2, too.

Note: Loading of SF2 from the file system is a 'Pro' mode feature.

When added to a Synth Network, a Wavetable Unit defaults to use the integral "General MIDI" (GM) SF2 Wavetable and plays Patch "001-Acoustic Grand Piano". To change the Patch select another one in the Patch list.

It is easy to use the other IM-included SF2 wavetables (IM Brush Kit, IM Drums, IM E-Perc, IM Guitar, IM Hand Perc, IM E-Piano, IM Piano, IM Synths, IM World Instruments).

Simply use the left list control to select the Wavetable from the list of those shown and then use the right hand list control to select the Patch (all patches available in the Wavetable are listed; they are listed in standard patch bank/patch order).

To use your own or 3rd party SF2, they just first need to be put in the right place (see: The "Wotja Folder" - Where is it and when should I use it?).

Note: If a Wavetable Unit is used in a Synth Network for a MIDI line, its Wavetable and selected patch will override the underlying piece's WME General MIDI Patch parameter (which always uses that patch in the GM Wavetable). If you DO want to use the piece's WME General MIDI Patch parameter setting, you must DELETE all units in the Synth Network and select the OK button to accept that. If you then re-enter the Synth Network you see a Wavetable Unit looks to have been added. It is a placeholder but it is not used - unless you enter the Wavetable unit in which case the sound will default to a GM Piano sound until you change it.

Top Tip: There are 4 parameters in the Wavetable unit that can be modulated: Frequency, Portamento, Amp and Pan. Try using a LFO Unit to modulate the Wavetable Unit's frequency parameter to apply a vibrato effect. To change how that vibrato is applied over time, try shaping the output of the LFO with an Envelope Unit before feeding into the Wavetable Unit.

Tip: You can use an audio junction unit to add together sounds from multiple tone generators to make even richer sounds.

  Wavetable - Tone Generator (Audio-rate)

  • Bypass?: When this is checked the unit is bypassed.
  • Amp: Used to set the unit's output level.
  • Pan: Used to set the unit output's pan position.
  • Ove: This allows you to specify the the octave offset from the voice's pitch. NB: To see this control you need to scroll down the top area.
  • Semi: This allows you to select the semitone offset from the voice's pitch (taking into account the octave offset above). NB: To see this control you need to scroll down the top area.
  • Micro: This allows you to specify the microtonal offset in order to 'detune' the tone. -100 is the equivalent to a semitone down, and +100 is a semitone up.

Selector List

  • SF2/DLS List (left): Used to select the Wavetable.
  • Patches List (right): Used to select the Patch in the Wavetable.
  • Randomize button (top right in Patches list): Randomly selects one of the Patches from the currently selected Wavetable.

Bottom Toolbar

  • Envelope Toggle: If on, the settings of the integral Envelope are applied. If off, the envelope values are ignored.
  • Envelope: The Wavetable unit has an integrated Envelope Unit which can be used to shape it's sounds. This is a very powerful feature that can be used for sound design (e.g. long attack and post release sounds).

  Amp (FX)

FX - Amp (Audio-rate)

Amp - FX
Click image for large

If you have a weak signal, e.g. coming out from a Filter Unit or an Wavetable Unit, then pump it into an amplifier. The Amplifier can multiply the input by a factor of up to 10. If you want more than this, feed it into another amplifier!

  Amp - FX (Audio-rate)

  • Bypass?: When this is checked the unit is bypassed.
  • Level: Determines the amount of amplification to be done by this amplifier unit. The default value is 1.00 (0dB - i.e. no amplification) and values can range from 0, 0.10 (-19dB) to 10.00 (20dB)
  • Pan: Determines the pan position of the signal. The default value is 64 (center).
  • Phase Invert?: When on, the phase of the signal will be inverted.
  • Pan Invert?: When on, the pan of the signal will inverted.

  Chorus (FX)

FX - Chorus (Audio-rate)

Chorus - FX
Click image for large

Sums the input and duplicates it at varying delay rates with the effect of "thickening" the audio. The delay time and frequency should be tweaked to give the right feel.

  Chorus - FX (Audio-rate)

  • Bypass?: When this is checked the unit is bypassed.
  • Wet: Adjust this value to alter the amount of "wet" (processed) signal in the mix.
  • Dry: Adjust this value to alter the amount of "dry" (unprocessed) signal in the mix.
  • Preset: Use this to apply a "macro" setting of chorus parameters.
  • Rate: A measure of the chorus modulation rate, in Hertz.
  • Depth: A measure of the chorus modulation depth, in milliseconds.
  • Feedback: The amount of Chorus Modulation Feedback to apply, as a percentage from 0 to 100 (which is the maximum).

  Compressor (FX)

FX - Compressor (Audio-rate)

Compressor - FX
Click image for large

Used to help compress the signal in the DSP chain.

If you view the compressor behavior as a function of Output (measured in decibels [dB]) against Input (measured in decibels [dB]), the compressor displays three distinct regions of behavior:

  • Linear with a slope of 1 up to the Compression Threshold (CT)
  • Compressor with a slope of 1/CR (where CR is the Compression Ratio) up to the Limit Threshold (lT)
  • Limiter with a slope of 0 from the Limit Threshold (lT) and beyond

  Compressor - FX (Audio-rate)

  • Bypass?: When this is checked the unit is bypassed.
  • Gain In: Input gain setting; defaults to 0 dB.
  • Threshold: This is the input/output level where the compressor becomes active. Below this level input = output.
  • Gain Out: Output gain setting; defaults to 0 dB.
  • Attack: This determines how quickly the envelope will respond to a positive change in the signal level. The value indicates the time it takes the envelope to rise 50% of the change.
  • Ratio: Determines the compression ratio. If this value is < 1 it will in effect work as an expander.
  • Release: This determines how quickly the envelope will respond to a negative change in the signal level. The value indicates the time it takes the envelope to fall 50% of the change.
  • Level Detect Mode: This has one of two values, which determines whether the signal is compressed/limited according to the peak or RMS level of the signal.
  • Limiter: The output is limited to this level. If this value is lower than dBCompThreshold, the compressor will not be in operation.

Mode

  • Peak: Use Peak signal
  • RMS: Use RMS signal

  Delay (FX)

FX - Delay (Audio-rate)

Delay - FX
Click image for large

Used to add interesting delay effects to an audio signal.

  Delay - FX (Audio-rate)

  • Bypass?: When this is checked the unit is bypassed.
  • Wet: Adjust this value to alter the amount of "wet" (processed) signal in the mix.
  • Dry: Adjust this value to alter the amount of "dry" (unprocessed) signal in the mix.
  • Time Fine: This parameter quickly determines the gross delay time in multiples of two. Increasing this parameter by one stop doubles the delay time, decreasing it halves it.
  • Time Multiplier: This parameter allows the user to fine tune the delay time in between the multiples specified by the parameter above.
  • Decay: This determines the amplitude attenuation with each passing delay tap.
  • Taps: The number of "taps" in the delay system : the greater this number, the greater is the "thickness" of the delay effect.
  • Ping Pong Freq: Frequency (Ping Pong) is the movement across the stereo field with each passing delay tap. A high Ping-Pong frequency ensures a 'Ping-Pong' type of effect from one channel to the other. A low frequency results in a type of drift from one channel to the other. Only applies if the Delay is applied to a stereo signal pipeline.
  • Phase: This simply determines where in the stereo field the Ping-Pong starts. Only applies if the Delay is applied to a stereo signal pipeline.
  • BPM Sync: Default (non-tempo synced option) and various BPM values, e.g. BPM/4 which means generate the waveform selected in the above list at a tempo of the mix tempo (BPM)/4. This control allows for tempo-synced control of the Delay unit, for great effect.

  Distortion (FX)

FX - Distortion (Audio-rate)

Distortion - FX
Click image for large

Distorts the sum of your incoming signals. Take cutoff X right down to about 0.02 to get a really distorted sound - it sounds great on a particle system! Cutoff Y acts like an amp and Cutoff Max determines the position of the output wave when the input is at 1.0 or -1.0.

The combination of Cutoff X, Y and Cutoff Max contribute to reshaping the input signal.

Graph of the Distortion Cutoff parameters

  Distortion - FX (Audio-rate)

  • Bypass?: When this is checked the unit is bypassed.
  • Wet: Adjust this value to alter the amount of "wet" (processed) signal in the mix.
  • Dry: Adjust this value to alter the amount of "dry" (unprocessed) signal in the mix.
  • Cutoff X: This determines the input value which will be scaled to the output value of 'y'.
  • Cutoff Y: As above, i.e. at input 'x', 'y' is the output.
  • Cutoff Max: At input value of 1.0, the output is 'Max'. Max may even be set to be lower than Cutoff Y

  Equaliser (FX)

FX - Equaliser (Audio-rate)

Equaliser - FX
Click image for large

Use the Equaliser Unit to modify the frequency response of your audio signal. Depending on how you configure the unit, it can operate as either a 5-band or a 10-band equaliser. Note that the 5-band equaliser takes less CPU power.

  Equaliser - FX (Audio-rate)

  • Bypass?: When this is checked the unit is bypassed.
  • Preset: Select from a range of presets.
  • Amplifier: Specifies the amount of pre-amplification applied to the equaliser input signal. Adjusts from -20 dB to +20 dB.
  • Base Freq: This slider adjusts the frequency of the lowest EQ band. All other sliders will automatically follow to maintain the frequency ratio between bands.
  • EQ bands: Specify the gain for the individual frequency bands. Adjust from -14 dB to +14 dB. Unused frequency bands will display "N/A" in case of 5-band EQ mode, or if band frequencies are close to or above half the sample frequency.

Toolbar

  • Lock checkbox: Use to allow all sliders to move together at the same time when you change any one of the individual slider values.
  • On/Off checkbox: Use this to enable or disable the EQ

  Filter (FX)

FX - Filter (Audio-rate)

Filter - FX
Click image for large

The Filter Unit can work in a variety of different ways depending on how you configure it:

  • Using a fixed filter frequency
  • Using a built-in frequency sweep
  • Using a filter frequency that is adjusted dynamically such that it tracks currently playing note pitches.

  Filter - FX (Audio-rate)

  • Bypass?: When this is checked the unit is bypassed.
  • Wet: Adjust this value to alter the amount of "wet" (processed) signal in the mix.
  • Dry: Adjust this value to alter the amount of "dry" (unprocessed) signal in the mix.
  • Filter Type: A list that includes Low Pass, High Pass and Band Pass.
  • Cutoff: Determines the minimum frequency for the built-in filter frequency sweep
  • Q: The amount of accentuation (resonance) of the filter, 1.0 is the lowest value, and provides low quality filtering with little resonance, 5.0 provides high quality filtering with high resonance, and 10.0 provides the greatest resonance.
  • Quality: The number of cascaded 12 dB/octave filter sections, defaults to 1. Use a higher value to get sharper cutoff, at the cost of greater CPU consumption.
  • Auto Sweep?: This toggle determines whether or not the built-in filter frequency is in use. When not selected, this checkbox disables automatic filter sweeping.
  • Cutoff min: Determines the cutoff or center frequency for the filter in Hertz.
  • Range: This value, when added to the Filter Cutoff Min determines the upper frequency for the built-in filter frequency sweep
  • Rate: Determines the rate in Hertz at which the filter sweep moves from minimum to maximum value (and back again) [Sweep check box must be checked].
  • Phase: Determines the phase used by the built-in frequency sweep.
  • Sync?: Only relevant when the filter is used with WME part.
  • Freq?: When this toggle is set, the filter frequency actually follows the currently played note pitch, where the note is generated by the WME. Tip: setting this checkbox gives a tonal quality to the Filter effect. In this case, the following parameters apply:
  • Octave Offset: This combo-box allows you to specify the octave offset from the current note pitch
  • Semi: This allows you to select the semitone offset from the current note pitch (taking into account the octave offset above) if Use Notes is set).
  • Micro: This allows you to specify the microtonal offset in order to 'detune' the filter. The value supplied is in cents (1 cent = 1/100 semitone).

  Overdrive (FX)

FX - Overdrive (Audio-rate)

Overdrive - FX
Click image for large

This unit adds overdrive distortion to the sound source.

  Overdrive - FX (Audio-rate)

  • Bypass?: When this is checked the unit is bypassed.
  • Wet: Adjust this value to alter the amount of "wet" (processed) signal in the mix.
  • Dry: Adjust this value to alter the amount of "dry" (unprocessed) signal in the mix.
  • Gain: Determines the amount of overdrive (distortion) applied.

  Pitch Shifter (FX)

FX - Pitch Shifter (Audio-rate)

Pitch Shifter - FX
Click image for large

This unit allows the pitch of the input to be live-shifted (there is a small latency) by up to a maximum of +/- 12 semitones.

The parameters that can be modulated (by a control-rate unit) are: Dry, Wet, Pan and Micro.

  Pitch Shifter - FX (Audio-rate)

  • Bypass?: When this is checked the unit is bypassed.
  • Pitch Shift (semitones): The amount of pitch shifting you want to occur in semitones (up to +/- 12).
  • Micro: This allows you to specify the microtonal offset in cents (1 cent = 1/100 semitone).
  • Wet: Adjust this value to alter the amount of "wet" (processed) signal in the mix.
  • Dry: Adjust this value to alter the amount of "dry" (unprocessed) signal in the mix.
  • Pan: Adjust this value to alter the pan of the output in the mix.

  Reverb 1 (FX)

FX - Reverb 1 (Audio-rate)

Reverb 1 - FX
Click image for large

This unit adds reverberation to the sound. This gives depth to the sound and makes it seem as though the piece is being performed in a room. You can control the 'size' and sound of this room with the parameters below.

  Reverb 1 - FX (Audio-rate)

  • Bypass?: When this is checked the unit is bypassed.
  • Wet: Adjust this value to alter the amount of "wet" (processed) signal in the mix.
  • Dry: Adjust this value to alter the amount of "dry" (unprocessed) signal in the mix.
  • Preset: Select from a range of presets.
  • Time: Determines the duration of the reverb.
  • HF Damp: In most environments high frequencies will attenuate more quickly than low frequencies due to damping caused by carpets, furnishings, etc. Use this control to adjust the amount of high frequency damping.
  • Pre Delay: Delay of reverb relative to the dry (unprocessed) signal.
  • Reverb Type List: Choose the reverb type from a number of musical and environmental presets.
  • Low Cut: Applies a lowpass filter to the reverberated sound. The value is the normalized cutoff frequency of the filter, with "1.00" corresponding to half the sample frequency (at 1.00 no lowpass filtering is applied).
  • High Cut:Applies a highpass filter to the reverberated sound. The value is the normalized cutoff frequency of the filter, with "1.00" corresponding to half the sample frequency (at 0.00 no highpass filtering is applied).
  • Combs: Determines the number of parallel comb filters used in the reverb algorithm. A higher number generates a more dense reverb tail, but is also more CPU intensive.
  • Filters: Determines the number of series allpass filters used in the reverb algorithm. A higher number generates a smoother reverb tail, but is also more CPU intensive.
  • Stereo: Adjust this value to change the perceived "width" of the sound.

  Reverb 2XL (FX)

FX - Reverb 2XL (Audio-rate)

Reverb 2XL - FX
Click image for large

This unit adds a complex reverberation to the sound and gives it a deep richness, but at the cost of more CPU processing than with Reverb 1. There are many parameters to explore.

The unit is based on the Cloud Seed Reverb unit, see the link for full documentation. We will be adding abbreviated details soon.

  Reverb - FX 2XL (Audio-rate)

  • Bypass?: When this is checked the unit is bypassed.
  • Preset: Select from a range of included presets.
  • Input Section:
    • L/R Cross-Blend (0-1):
    • Predelay (0-1000ms):
    • Low Cut Enabled?:
    • Low Cut (0-1):
    • High Cut Enabled?:
    • High Cut(0-1):
  • Output Section:
    • Dry Signal Out (0-1):
    • Input Section Out (0-1):
    • Early Reflections Out (0-1):
    • Late Reflections Out (0-1):
    • Interpolation?:
    • Equalization:
      • Low Shelf Enabled?:
      • Low Shelf Frequency (0-1):
      • Low Shelf Gain (0-1):
      • High Shelf Enabled?:
      • High Shelf Frequency (0-1):
      • High Shelf Gain (0-1):
      • Cutoff Enabled?:
      • LP Cutoff Frequency (0-1):
      • Stereo Width (0-1):
    • Early Reflections - Delays:
      • Tap Count (0-1):
      • Tap Length (0-500ms):
      • Tap Gain (0-1):
      • Tap Decay (0-1):
      • Tap Seed (0-1m):
    • Early Reflections - Diffuser:
      • Enabled?:
      • Delay (0-1):
      • Feedback (0-1):
      • Mod Amount (0-2.5):
      • Mod Rate (0-1):
      • Stages (0-8):
      • Diffusion Seed (0-1m):
    • Late Reverberation:
      • Lines in Parallel (1-12):
    • Late Reverberation - Delay:
      • Time (0-1):
      • Line Decay (0-500ms):
      • Mod Amount (0-2.5):
      • Mod Rate (0-1):
      • Tap: Pre/Post (on = Pre; off = Post)?:
      • Delay Seed (0-1m):
    • Late Reverberation - Diffuser:
      • Enabled?:
      • Delay (0-1):
      • Feedback (0-1):
      • Mod Amount (0-2.5):
      • Mod Rate (0-1):
      • Stages (0-8):
      • Diffusion Seed (0-1m):
    • Wet: Adjust this value to alter the amount of "wet" (processed) signal in the mix.
    • Dry: Adjust this value to alter the amount of "dry" (unprocessed) signal in the mix.

  Envelope (Ctrl)

Controller - Envelope (Control-rate)

Envelope - Controller
Click image for large

The Envelope Unit is used to edit the "Ctrl-Envelope" control-rate plugin. It is only of use in Modular Synth networks, where it is triggered in response to MIDI note on events for the current MIDI line, and generates no sound of its own. Used in context of the TG Osc it is also triggered in response to MIDI note off events.

Note: An Envelope Unit can be added to an FX Network, but it cannot be used to modulate an FX and can even mute the sound - so we do not recommend doing it!

There are a number of values which you can adjust to modify the shape of your envelope. The shape used is shown in this diagram below.



  Envelope - Controller (Control-rate)

  • Delay: The length of time it takes after a note on event occurs for the voice, before the volume envelope starts to rise-up from zero to its Attack level.
  • Attack: The length of time it takes after the delay time has passed for the voice, to rise-up from zero to its Attack level.
  • Atk Level (Advanced): The target level for the attack stage of the envelope, as the envelope rises from its initial value of zero.
  • Hold: The length of time it takes after the attack level is reached, before the envelope starts to decay down to the Sustain Level.
  • Decay: The length of time it takes for the envelope to decay down from the Attack Level, down to the Sustain Level.
  • Sustain: The level at which the note will play, once all of the Decay, Attack, and Hold periods have completed.
  • Post Attack (Advanced): The length of time it takes after the note stop event occurs, for the envelope to move from the sustain level to the post-attack level
  • Pst Atk Level (Advanced): The target level for the post-attack stage of the envelope, as the envelope moves from its sustain level.
  • Post Hold (Advanced): The length of time it takes after the post attack level is reached, before the envelope starts to decay down to zero.
  • Release: This time defines the time it takes for the Voice to respond to a note off event, in terms of how long it takes to decay from the Post-Attack Level to a level of zero.

Toolbar

  • Reset: Sets the envelope back to default values.
  • Linear: This toggle lets you set both Decay and Release stages to either Linear or Exponential.
  • Advanced: When toggled on, you can see some extra controls, indicated above as "Advanced".

  LFO (Ctrl)

Controller - LFO (Control-rate)

LFO - Controller
Click image for large

This unit lets you create a range of control-rate waveforms. The waveforms oscillate at a pitch that you dictate yourself. They are used for modulating the parameters of other effect units; they should only be run below (say) 50Hz or you'll get some odd effects.

  LFO - Controller (Control-rate)

  • Bypass?: When this is checked the unit is bypassed.
  • Level: Sets the amplitude of the generated LFO waveform.
  • Frequency: This controls the frequency of the LFO, in Hertz (Hz, cycles per second).

Type

  • LFO Type: This list includes Sine, Saw left, Saw right, Triangle, Square, STS (Saw, Triangle, Square) and Random. Change the LFO Type to dramatically change the sound of your LFO.
    • Sine produces a smooth waveform with no other harmonics.
    • Saw Left and Saw Right produce waves that look like a saw-tooth close up. The either slope to the left or to the right, but sound identical (they are both provided, as combining these with other waveforms provide interesting effects due to their different phasing!).
    • Triangle sounds not quite as harsh as the saw-tooth but has more harmonics than the sine.
    • Square produces a 'square' looking wave and sounds rougher than either the sine or saw-tooth waves. With the square wave you have the option of specifying the ratio of the up portion of the wave to the down portion. At either extreme, the square wave becomes more like a pulse wave, giving a 'pulsing' sound at lower pitches.
    • STS stands for 'Saw, Triangle, Square' because it is a hybrid between these three wave types. By varying the three parameters associated with it, the wave shape can be 'morphed' between the above three extremes. In effect, this waves covers all the preceding wave shapes, with the exception of the sine wave.
    • Random produces white noise between Min and Max, also affected by the Amplitude. These values are produced irrespective of the pitch of the tone generator; and do not use the envelope of the tone generator. Random signals are particularly interesting when fed into filter effect units!
    • Note On Random means that every time a note on event occurs, the random value changes, and sits there until the next note on event occurs. The value then sits there, until the next note on event - when the value is changed again.
  • Min: This defines the minimum value that the generated LFO waveform can have.
  • Max: This defines the maximum value that the generated LFO waveform can have.
  • Phase: Useful for slow oscillators (e.g. 0.2 Hz) - determines the start point of the oscillator.
  • BPM Sync: Default (non-tempo synced option) and various BPM values, e.g. BPM/4 which means generate the waveform selected in the above list at a tempo of the mix tempo (BPM)/4. This control allows for tempo-synced control of e.g. the Filter unit, for great effect.
  • Random Levels?: When checked, creates random control values bounded between the settings of the Min and Mix knobs. If a BPM setting is chosen in the Freq List, then these values will change at that control rate for a "sample and hold" effect.
  • Use MIDI note?: Applies the waveform each time a MIDI note is played.

STS

WAE STS Waveform ratios

The STS Waveform and its ratios

  • U/D: Only for the Square and STS wave types. Defines the ratio of "Up" to "Down" (or "On" to "Off") values (for STS waveforms, this is the ratio of u to d in the diagram below).
  • Sqr: Only for the STS wave type. Defines the "squareness" of the waveform (the ratio of s to u in the diagram below).
  • Slant: Only for the STS wave type. Defines the skew of the waveform (the ratio of a to a + b in the diagram below)
    • With the Up Down Ratio at 100.0%, the Squareness Ratio at 0.0% and the Slant Ratio at 50.0%, the shape is a triangle.
    • With the Up Down Ratio at 100.0%, the Squareness Ratio at 0.0% and the Slant Ratio at 0.0% or 100.0%, the shape is a Saw Right or Saw Left respectively.
    • Lastly, with the Up Down Ratio at 100.0%, the Squareness Ratio at 100.0% and the Slant Ratio at anything you please, the shape is a Square wave.

  Amp (Ctrl)

Controller - Amp (Control-rate)

Amp - Controller
Click image for large

If you have a weak control rate signal, coming from a LFO for example, then pump it into an amplifier. The Amplifier can multiply the input by a factor of up to 10. If you want more than this, feed it into another amplifier!

  Amp - Controller (Control-rate)

  • Bypass?: When this is checked the unit is bypassed.
  • Level: Determines the amount of amplification to be done by this amplifier unit. The default value is 1.00 (0dB - i.e. no amplification) and values can range from 0, 0.10 (-19dB) to 10.00 (20dB)
  • Pan: Determines the pan position of the signal. The default value is 64 (center).
  • Phase Invert?: When on, the phase of the signal will be inverted.
  • Pan Invert?: When on, the pan of the signal will inverted.

  Junction

Junction Unit

Junction Unit
Click image for large

Audio-rate / Control-rate

Junction units are what you use whenever you need to add or combine together the output from two or more units in the system. They are added from the Units drop list below the Chain display. They are shown in grey in the network and have no interface of their own.

There are two types:

  • Junction: Audio-rate junctions for Tone Generators and FX (and available only in Synth networks). Use these when you need to add-together outputs from two or more audio-rate units. They display in the top "audio-rate" line of the network
  • Ctrl-Junction: Control-rate junctions for Controllers (available in both Synth and FX networks). Use these when you need to add-together outputs two or more control-rate units. They display in the bottom "control-rate" line in the network

When a junction unit is selected in the top "Chain" display area, a "Connector + Unit" section displays at the bottom of the Network Editor screen and which lets you change junction inputs.

  Junction - Audio-rate / Control-rate

Connector + Unit & Scale: These only show if your currently selected unit is a audio-rate [audio] junction ("Junction") or a control-rate junction ("Ctrl-Junction").

  • Bypass?: When this is checked the junction unit is bypassed.
  • Connector: The "Connector" list shows you a count of all the effects unit inputs that are fed-in to your junction. The numbers in the list are just always numbered automatically from 1 upwards.
  • Unit: The "Unit" list lets you select the effects unit (which must be a unit at the same rate as the junction!) that is to be added together to help create the output of the junction. Change the entry here to be the unit number of the unit that you want to add with other unit outputs.
  • Add: Press the "Add" button to add a new entry to your "Input" list.
  • Delete: Press the "Delete" button to remove the currently selected Input list item.
  • Scale: The "Scale" slider lets you fine-tune a scaling factor between -2 and 2, by which the output value of your "input" unit is multiplied, before being added together with the other unit values that are feeding this junction. This allows you to carefully adjust the amount by which a parameter is modulated. Note that if more than one control-rate unit feeds a specific parameter on a target unit, they will get added together automatically (including the appropriate scaling factor); which means that control-rate junctions are not often required. Double tap or right mouse click the Scale slider for a pop-up menu with the following options:
    • Edit: Enter the value you want to use in the pop-up text field.
    • Default: Sets the value to 1.
    • Zero: Sets the value to 0.
    • Random: Sets the value to some random value between -2 and 2.

Synth Tutorial 1

Sine Waves

Sine Wave

Introducing sound synthesis

The WAE incorporates a very powerful and flexible software synthesizer. The WAE and its pop-up plugin editors are a new audio application suite, that supports editing of effect plugin settings. The features and flexibility of the WAE are such that, to make the best use of them you will find that a little understanding of the basics of sound synthesis will go a long way.

If you haven't delved too deeply into programming synthesizers before now, or if you fancy a quick refresher course, then this tutorial is for you. We will not be getting heavy with the physics and number crunching side of things here. We'll keep it practical and, hopefully useful. Let's go.

The naming of things

We have to start by establishing the meanings of the terms we will be using from here on in. Creating sound is all about finding new and interesting ways to shove air around. Here is an idealized illustration of what that might look like using a single pure tone.

Using this graphic we can identify some basic units and concepts in sound generation.

The waveform

The waveform is the wiggly line, obviously! This one is a sine wave.

A cycle

The area between the vertical blue lines in the graphic is a single cycle of this wave. In this instance it starts at zero, rises to the highest point, drop back down to zero, continues to the lowest point and rises up to zero again. You can start a cycle at any point of the waveform. It doesn't have to start from zero. The main thing to remember is, if you choose any arbitrary point on the waveform to start from, when you reach that point again, so long as you are traveling in the same direction as you were when you left it, you have completed a single cycle.

If you start the waveform at some other point that the one shown here (say, from the highest point on the graph) you have changed the phase of the waveform. It doesn't make it sound any different if you listen to the tone on its own but there are good reasons for being able to change the phase of a wave if you wish. We'll get to them soon.

Frequency

Describes the number of cycles in each second. It is measured in Hertz (Hz), one hertz being one cycle per second. If the frequency is in our hearing range we perceive it as the pitch of a note. The human hearing range falls roughly between 20Hz at the low end and about 20,000 Hz at the upper end. If you can hear much higher than that then your owner needs to get you a dog license. Human ears aren't very good at detecting pitch at the extremes of our hearing range but can be incredibly acute in the midranges.

Amplitude

Describes the range of upward and downward movement the waveform makes. We hear it as volume. Large amplitude values mean loud audio signals. Small ones mean quiet ones. If you reduce the amplitude of a wave you are said to attenuate it, if you increase it you are amplifying the signal. These amounts are typically measured in decibels (dB) which are a total pain to work with, mostly because they work to a negative logarithmic scale where minus infinity is the quietest point and zero is the point of optimal loudness. So we'll move quickly past.

In a wholly analogue system, like a Stratocaster plus a Marshall stack, amplifying a sound beyond that optimal point gives the desirable sort of distortion sound that has been putting food on guitarists' tables for years. No such luck with a digital system. In the digital world you cannot take the amplitude of a waveform beyond 0 dB. If you try, the wave looks like it hit a brick wall and sounds ghastly!

We mention this because putting sound into an amplifier is only one way of increasing its amplitude. Adding another sound source also increases the amplitude of the sound we hear. Which is why a full string section is louder that a solo violin.

In sound synthesis it is not uncommon to use several sound sources to create a single sound. The WAE has a built in limiter that manages sound levels internally for you to keep things out of the clipping zone. However, you will need to take some care of levels yourself if you want the best possible sound quality. A limiter working hard is often quite audible which might not be an effect you want to hear!

Zero crossing

If you think about it, moving air around systematically involves both pushing it and pulling it blowing and sucking. This is reflected in the graphic in that there is a line drawn through the center of the waveform. Amplitudes above the line have a positive value, those below have a negative one. In the jargon, audio signals are usually bipolar.

The point at which a waveform has an amplitude of zero is particularly important in sampling, something we will cover later. But the location of the zero crossing line has a significance in synthesis also.

For convenience, we show the zero line in the graphic as bisecting the waveform so there are equal amounts of waveform both above and below the line. Things don't always have to be this way and there are ways for us to move this line up or down. To do so, in the jargon once again, we apply a DC offset to the waveform.

As moving this line up or down will make no appreciable difference to the sound of the tone, why worry about it? If an audio signal is what you want, in truth it is not worth bothering with. But, if you want to use a waveform for something other than audio, like using one waveshape to control the parameters of a second then it can be very important. As we might find out later!

And that's about as much as we need to know about the components of a waveform. But there are a couple of other things we need to touch on to help understand how to synthesize sounds.

Fundamentals, harmonics and the rest.

If you play a note on any tuned musical instrument you will hear an astonishing complexity of sound. But, despite that complexity you will (hopefully) perceive a pitch. That's the fundamental. In all sounds that we perceive as pitched there is one frequency that stands out from all the other noises in there and this is the one the ear uses as the pitch reference. A piano, violin and oboe sound totally different to each other but, if they all play note A4 you will hear three distinctive sounds all having a common fundamental frequency of 440 Hz or thereabouts.

If you listen more closely to the sound of a single instrument playing a single note, once you get past hearing the fundamental you will hear a range of other tones. Some of these work in a musical way and sound rather like chordal notes related to the fundamental. Others have a more uneasy relationship to the fundamental or are completely atonal.

The musical ones are harmonics. They sound musical because they have a very precise mathematical relationship with the fundamental frequency. The frequency of the harmonics are always a whole number (integer) ratio of the fundamental frequency.

Just to confuse matters slightly, the fundamental is also called the first harmonic. So, a tone with a fundamental frequency of 100Hz will have the second harmonic at 200Hz (an octave), the third at 300Hz (octave plus a fifth), the fourth at 400Hz (two octaves) and so on to the limits of our hearing.

The other sounds that you can hear are called aharmonics. These are frequencies that have a non integer ratio to the fundamental. When there are a lot of these present we tend to perceive the sound as clangorous or bell like.

If these three elements were all present in a sound in similar proportions we wouldn't hear a musical note at all. We would hear noise. So, to make musical sounds we need to find some way of establishing a balance between the fundamental, the harmonics and the aharmonics for any given frequency. And that's what synthesis is all about.

There are three major routes to doing this. One is that we can start off with basic sounds that are very rich in harmonics and then use a filter to reduce or remove the ones we don't want. Oddly enough, that is called subtractive synthesis.

We can also do the exact opposite. We can take very simple tones and add them together to create complex sound. Additive synthesis, surprisingly hard to do well.

The third route is a kind of middle way between these two. If the properties of one waveform can be used to vary those of another at audio frequencies, new and complex waveforms can be generated. You could call this synthesis by modulation. The most common methods used are amplitude modulation and frequency modulation.

In reality we mix and match, using elements from all three main routes as we need them.

Blocking it out

The components of most synthesizers can be categorized into four broad groups.

The first group could be called sources. These are the devices that produce the raw sound you will work with. The WAE allows you to use samples as sources as well as including some very well featured tone generators.

The next group we can call modifiers. Included here would be envelopes that shape the sound over time and filters that remove or emphasize certain frequencies.

The third group are modulators. They apply regular, repeated change over time to specific sound parameters. The most common of these is the low frequency oscillator, the LFO.

Finally there are the effectors. These are signal processing devices, reverberation modules, delays and so on. Usually they act at the end of the synthesis chain.

It is usual to define the output from modifiers and modulators as control signals; being as their usual job is to control the parameters of other devices in the synthesis chain. In the days of monster analogue modular synths it was considered sensible to use different colored patch cords for control signals to distinguish them from audio and other signals. When using the WAE it is also important to distinguish control signals from the audio path. We'll explain why in a moment.

For now, let's have a look at the first three device types in turn.

The right wave for the right job

Any self-respecting synthesizer will have a tone generator offering several basic waveforms as a starting point for sound creation. Why? What distinguishes one waveform from another? The answer lies in the harmonics on offer. So lets just quickly run through the more common waveforms and see what distinguishes one from the other.

Sine wave

Is a pure tone. It has no harmonics at all so there is not much point in applying a filter to one. Nothing to filter! This purity of tone make it very good for adding low end definition or kick to a bass sound. It is also good for additive synthesis where you don't want harmonics unless you put them there yourself. Put three or four of these waves together for an instant electronic organ type of sound.

Sawtooth wave

Is the most harmonically rich waveform in the box. Characteristically bright and buzzy. The starting point for thousands of classic synth sounds. A sawtooth wave has every harmonic present (theoretically) but their amplitude decreases from that of the fundamental by 1/the harmonic number. So the second harmonic is ½ as loud as the fundamental, the third harmonic is 1/3 as loud as the fundamental and so on until you hearing fails.

Triangle wave

Really just a sine wave straightened out. It doesn't have many harmonics and those that are present are quite high up. So, if you want hard and aggressive sounds this is not the wave to choose. Nice for flute sounds and soft leads though.

Square wave

A bit complex this one. A graph of a true square wave looks rather like a child's drawing of castle battlements. Square wave is a shorthand way of saying "pulse wave that spends as much time at the highest point as it does at the lowest". In this form it has a sound that is usually described as "hollow". The reason is that every second harmonic is missing, there are only odd numbered harmonics present.

But this absence of even harmonics only holds true if the time between "high" and "low" in the cycle are the same. If the wave spends half of its time at the top the ratio between the high points and the low points of the waveform is 1:2 and, as we already know, every second harmonic is missing. If we change this ratio to 1:3 (i.e. the wave spends 33.3% of its time at the top) some of the missing harmonics return. We now only loose every third harmonic instead. If the ratio was 1:4 (25%) we would only loose every fourth harmonic. And so on.

If there was a way of shifting this ratio in real-time we would be able to hear these harmonics coming and going. We could call it pulse width modulation and use it to recreate classic synth string sounds, all kinds of shimmery pad like sounds and some unforgettable bass tones. Sounds like a plan!

Combination waves

Unsurprisingly, combination waves can have the characteristics of most of the above. The WAE includes one waveform that can be "morphed" from triangle to sawtooth to pulse wave. If you've followed us this far you should have realized that this gives you the option of tailoring the harmonic content of the waveform quite closely; a very powerful option indeed. Similarly, being able to change the shape of a wave in real-time can open the door to a whole new bag of sonic tricks. Pulse width modulation on steroids!

Envelopes

Envelopes give us a way of shaping a sound in time. Every synthesizer will always have at least one to control the amplitude of a signal. More sophisticated synthesizers will have several envelope generators which can be assigned to control other important parameters.

Envelopes are usually "one-shot" devices. An event triggers their start and, once underway, they transmit values that correspond to the envelope shape until they are done. They then do nothing until they are triggered again. Amplitude envelopes are usually triggered by the equivalent of a note being pressed on a keyboard.

Envelopes can be described by the stages they go through. The WAE amplitude envelope is a multi-stage envelope, having separate stages for Attack (how quickly the envelope moves from zero to maximum), Hold (how long it stays at the final attack level), Decay (how quickly the level falls to the..), Sustain (the lowest possible level during a note event) and Release (how long the sound will take to fall to zero from wherever it was when the note event stopped). There is a set of stages associated with when the note stops.

The control signals sent by the envelope unit in the WAE can be bipolar; i.e. the control signal value can be positive or negative. This has got some implications if you want to combine control signals from more than one device.

Say you want to combine the output from an envelope and a LFO to create a LFO that fades up or down. As these could both be bipolar signals, shoving them into an adding unit (a simple mixer) won't work as you expect. Adding a minus value to a positive one is subtraction by another name so doing this will result in periodic signal cancellations and other unexpected behavior

If you recall your basic grade maths, you'll remember that a negative (minus) value multiplied by a positive always gives a negative result. So, if you want to combine bipolar control signals, use a negative scaling factor on one or more of your control-rate junction input scale factors!

Filters

Amongst some synth nerds, filters can acquire a mythical status, becoming objects to be worshiped or argued about into the small hours. This is rather off-putting for the rest of us and obscures the fact that, from a users point of view, they are actually rather simple devices.

There are only four things you need to know about a filter; its shape, its slope, its cutoff point and whether it is resonant.

The shape is usually what gives the filter its name. So it is a safe bet that a low pass filter will allow low frequencies through and exclude higher ones. Similarly, a high pass filter will do the opposite. A band pass will allow through frequencies that fall into a certain range and a band reject will allow everything through except frequencies in the defined range. Nothing mysterious about that.

The cutoff point is the frequency at which the filter will start to do its stuff. So a low pass with a cutoff point of 600Hz will start to attenuate anything over 600Hz but leave all the lower frequencies alone.

The slope of a filter simply determines how sharp the attenuation will be. It is sometimes expressed in dB per octave and sometimes in "poles". The famous Moog filter had a 4 pole slope which equates to a reduction of 24dB per octave. If the earlier example of a 600Hz lowpass cutoff was a 4 pole type it would mean that, by the time we got to frequencies of 1200 Hz they would be attenuated by 24dB compared to the ones at 600Hz. This is quite a steep reduction and would leave very little audible signal by the time we got beyond 1500Hz. Something more gentle, like a 2 pole slope would only attenuate frequencies by 12dB per octave. So you would hear more of the higher harmonics.

Filter resonance (sometimes called Q for reasons that don't matter) is also pretty straightforward. All this does is emphasize the frequencies around the cutoff point. It is a kind of feedback loop. The higher the Q the more pronounced are the sounds at the cutoff frequency. On some old analogue synths you could crank this up so high that the only thing you could hear was the cutoff frequency so the filter would start to behave like an oscillator. This was called self-resonance. It is not so easy to do in a digital system.

And that's filters really. If they were fix and forget devices they would be little more than glorified tone controls. But, if we can use envelopes or LFO's to change the cutoff frequency or resonance in a dynamic way, then they are the heart of a subtractive synthesis system. Hence all the attention they get.

Modulators Part 1 Slow and gentle

We've made passing reference to it before but it is now time to get into some detail about modulation. It is a huge topic because there are so many possibilities. The skillful use of modulation techniques is probably the single most important factor in getting dynamic, expressive, musical sounds out of a synthesizer.

We'll start with a definition. In synthesis, modulation is the process of using one signal to apply regular, usually cyclical change to one or more parameters of a second signal. Lets look at a simple practical example.

A violinist often gives expression to a piece by adding vibrato. When he or she waggles their finger on the fretboard the net result is that they are making small regular changes to the fundamental frequency of the note they are currently playing. We can do exactly the same thing with our instruments.

To create vibrato on a synthesized voice we simply apply small regular, cyclical changes to the oscillator frequency. We do that by routing the output of one, low frequency (i.e. slow) oscillator to the frequency controls of the main, audio oscillator.

The change this will make depends upon the properties of the signal sent from the low frequency oscillator (LFO). And, when we use a LFO as a controller of other parameters, some things that are not important to the sound of a waveform become very relevant indeed.

There are five aspects to a LFO waveform that are important to consider; the actual shape of the wave, its frequency and amplitude, its phase and its DC offset.

Frequency and amplitude are quite easy to come to terms with. The higher the frequency of the LFO the more changes per second will be made. Amplitude is an interesting one. In our violin example, sending a 100% amplitude sine wave from the LFO to the tone generator frequency control would not give us vibrato. It would give us the sonic equivalent of seasickness. You use the amplitude controls of an LFO to determine how much change is to be applied. For vibrato, very small amplitudes around 3% will do fine.

It is useful to be able to visualize the wave shape of an LFO. If we are generating a sawtooth wave at audio frequencies then the direction of the sloping part of the wave is irrelevant to the sound. A wave that has a slope to the left sounds the same as one with a slope to the right. However, if we want to use an LFO to make gradual change to one parameter, then fall down to the beginning and start again, we would not want to use a waveform with a left facing slope. Visualize it!

Phase and DC offset are related to some degree. Lets consider phase first.

In the vibrato example, for the main oscillator to remain in tune we need the LFO to start from the zero crossing point. If it started at any other place it would automatically add something to the main oscillator and cause it to sound out of tune.

There might be other occasions when we want the effect that comes with starting the LFO at somewhere other than zero. In those circumstances we would adjust the phase to suit our purpose. Again, the best advice is to try to visualize what you want to achieve, then program it accordingly.

Finally there is the DC offset for the LFO. To go back to our violinist (for the last time, honest!) a vibrato effect that shifts the fundamental pitch up and down by equal amounts is not very natural sounding. It actually sounds far more realistic if we push the frequency in one predominant direction. The way to do this with an LFO is to shift the DC offset.

Think about it like this. The LFO is sending numerical values out to be added to the frequency of the main oscillator. As a bipolar signal with no DC offset, half of these values will be positive and half will be negative. Changing the DC offset will shift this balance. If we only want the vibrato to work up from the fundamental we would need to shift the zero crossing point right down so that the LFO sent out only positive values.

This can be hard to visualize just by applying a numerical offset value so the WAE makes it very easy by giving you an option to set the ratio between positive and negative values transmitted by the LFO using two sliders. Nice!

There is a catch to doing this though. If you change the DC offset it will obviously have a non-zero value. Less obviously, if you sent this DC offset LFO to the pitch control of another oscillator you will automatically add the DC offset value to it, taking the oscillator out of tune! So, if you are shifting DC offsets in this way you need to retune the destination oscillator to compensate.

Exactly the same principles apply when using LFO to modulate parameters other than oscillator frequency. We've mentioned how the harmonics present in a pulse wave change depending upon the pulse width ratio. If you route a slow LFO to modulate the width of a pulse wave type oscillator you get a rich shimmering sort of sound as harmonics come and go that has been the basis for synth string patches since forever. It also gives some astonishing bass sounds in the lower registers. Pulse width modulation was actually hardwired into the infamous Moog Taurus bass pedals so beloved by `70's prog-rockers.

Incidentally, if you are using an LFO to modulate pulse width you will need to attend to its amplitude. Too much modulation and you can get to the stage where there are no harmonics at all - not even the first one! Silence is not always golden.

Modulation by slow, sub-audio oscillators is not too difficult to get to grips with. But there is no rule that says that modulators always have to be inaudible. However, what happens when you crank the modulator signal up into the audio range can get pretty wild. One option is to use a device called a Ring Modulator.

With this device you simply take two sound sources and plug 'em into it. In effect what happens after that is that the first audio signal gets spliced with other signal at the frequency of that second signal. What you end up with is a new signal that consists of the sum and the difference of the two incoming signals. Which is OK if the two are pure sine waves. But if they have harmonics attached...:)

At low modulator speeds a ring modulator just chops up the sound in quite an obvious way. This was how they made the Daleks speak! But at high modulator speeds you can get all manner of crazy, unpredictable effects, especially if the modulator frequency is either fixed or changes in a way not related to the carrier. If you want one of those "car crash in a steel foundry" moments (and who doesn't) head for the ring modulator.

As we are talking about high speed modulation it is probably worth mentioning something that isn't going to work in the way you might think. At this point we need to get a bit technical about the workings of the WAE. Remember what we said about distinguishing control signals from audio signals? Here's why you need to do it.

The WAE is a digital synth (obviously!) so everything going on under the hood has to have a sample rate to work to. In order to save resources for the things that matter, the WAE gives absolute priority to rendering the audio signal at a reasonable sample rate, typically 22Khz on a modest PC. To save CPU time, all control signals are rendered at a very low sample rate. The default rate is 100Hz..

In most circumstances, this low sample rate isn't an issue. You don't need to hear the actual output of an LFO or envelope unit so there is no point in rendering it at CD quality when we can do better things with the resources available. However, it does mean that you can't just stick the output of one tone generator into the frequency control input of another because the (incoming) modulating signal will be interpreted as being a control signal and so will be capped at the control signal sample rate frequency.

Going granular

Granular synthesis is a relative newcomer as a synthesis method, mainly because the tools and processing power needed to do it easily haven't been readily available until recent times. As powerful computers tended to be in academic institutions it gathered a reputation for being "something for the boffins". While the underlying maths might be the stuff of nightmares, the concept of granular synthesis is dead easy. Here goes.

If you take a very small section out of a waveform ( a few milliseconds at most), add an similarly small section of silence and loop play the result at audio frequencies you get an entirely new, and rather complex waveform. The audio content of this waveform will be determined by several different things; the size and content of the original mini sample (the grain), the length of the silence, the nature of the boundary between the two (is it abrupt or does it fade and by how much?) and the playback speed.

If you think about it, this is not a million miles away in principle from good old amplitude modulation. But then we take it to another level!

If you move away from using a single grain to using multiple grains, all with different frequencies, or if we modulate the grain size and/or the grain end cross-fades it all gets very strange. You very soon start to generate mutated, wholly original sounds that are not easy to achieve by other means. Which is what the buzz about granular synthesis is all about.

Now we wouldn't be telling you all this if there wasn't a way to do it with the WAE. One of the modules available is a "particle generator" and mainstream this is not! What this module does is generate up to twenty little bits of simple waveforms which are then used as the grains in creating a more complex overall sound. You control a range of the more useful and interesting parameters, most of which can be modulated by other the WAE modules.

What comes out of the business end of this module is not always predictable. It is very easy to get it to generate complex, untuned warbling or twinkling sounds. With a little more effort you can make some breathtaking, animated, tuned soft lead sounds. As it is hard to describe the indescribable the best way to learn about this little beastie is simply to play with it. Think about it as a hands on introduction to chaos theory!

A quick word about hybrid synthesis

The use of "real world" sounds instead of tone generators as the starting point for sound synthesis is hardly a new concept. But it wasn't until the 1980's and the development of affordable digital recording technology that the full potential of this could begin to be realized. The ability to process and manipulate recorded sounds using the familiar shaping and modulating tools is a form of hybrid synthesis.

The simplest implementation of this can be seen in most samplers which basically slap a subtractive synthesis engine onto a digital sample playback device. You can do this with the WAE, no problem. And we will. Later.

But that is more than enough background for this tutorial. We can now take this knowledge forward with us and explore the WAE in more practical terms by starting to build our own instruments within the WAE.


Synth Tutorial 2

Working with the WAE Modular Synthesizer

Launch the Synth & FX Editor. This is the place where you activate and program the WAE ... and where MIDI sound creation for the Intermorphic Sound System (ISS) gets very interesting!

Note that the audio plugin framework that underpins the WAE is an open framework, and has been designed to allow 3rd party developers to create application UIs into which they can plug in their own or other 3rd party sound processing modules, including support for the Intermorphic modules if so required.

When you start using the WAE for a MIDI line, what you have is an independent, non-midi, polyphonic synthesizer The sound generation limitations of MIDI pretty much go out of the window.

The WAE is no lightweight. It has a degree of flexibility that is comparable to the old, monster modular synths. It includes some features that are seldom seen, even on very expensive, "famous name" hardware synths. Inevitably, something so well featured and flexible isn't able to hide its complexity too well so there will be a bit of a learning curve to negotiate if you are going to be able to harness this power in a creative way. This tutorial aims to help you up along that curve.

We won't be creating full pieces of music in this tutorial; instead, we'll concentrate on programming sounds using the WAE.

The Path

To get the best from any synthesizer you really need to have some understanding of the path the various signals take inside it. If you have had some experience of hardware synths you will probably be used to imagining a left to right signal path, with the sound generating oscillators at left hand side and the sound output stage at the far right. The WAE signal path pretty much follows this convention...

It is here, in the Synth Network Editor, that we design the sound for the selected MIDI line. As you add synth units to your sound design, they appear as boxes in the bottom part of the dialog. We sometimes refer to these units as "slots"; you can have as many "slots" as you want, where you insert the various modules and units that, together, will make your synthesizer module. The sound you eventually hear will come only from the audio-rate unit in the rightmost slot. So, if you were to construct the simplest of synthesizers, using one tone generator and a LFO, you would have to put the tone generator in a slot somewhere to the right of the LFO. Put them the other way round and, if it was fast enough, all you would hear would be the LFO!

With the proviso that the sound comes out of the right most unit, the signal-flow is pretty strict in terms of left-right ordering. Signals from one module can only ever be passed to modules that are to the right of it in the design. In practice you must put control-rate units (your controllers and shapers, such as envelopes and LFOs) sound BEFORE the sound generating modules (i.e. before your tone generators). So, if you want to use an envelope to control the output from a LFO, you'll have to put the envelope to the left of the LFO. This does of course help you keep a handle on what your signal path is doing. With practice, you won't be confused.

Control signals are different.

Says it all really.

The WAE makes an important distinction between audio signals and control signals. Here's how it works.

Most signals in the system are "audio-rate" signals; they are rendered at whatever sample rate the platform is running at, for example 22Khz.

The only signals that can be used to modulate parameters of a synth unit (e.g. to amplitude or wave shape) are control-rate signals, that must come from a control-rate unit. To save CPU resources for the things that matter, control signals are rendered at a very low sample rate; typically 100Hz. So, if you try to modulate a parameters between units at audio frequencies the best you are going to get is 100Hz. This is not going to be good enough for specialized applications such as FM synthesis!

The reason that we do this, is that it saves a lot of CPU horsepower; to render subsonic waveforms at near CD quality would be pretty pointless. You don't want or need to hear the direct output of an envelope unit or a slow LFO.

On tuning

A fixed architecture synthesizer with limited flexibility can hide a lot of things from the end user. Because the WAE has been designed for flexibility it is up to you to take care of some of the details to make sure that the results you get are the results you expect. This is particularly the case when making sure your MIDI line is in tune with the others in a piece.

The thing that is most likely to catch you out is when you use a LFO to modulate the frequency of a tone generator. If you use the LFO with most of its settings at the default there will not be a problem. However, if you adjust the min or max value sliders you will have a tuning problem that will need correction. Why?

If you recall in the synthesis tutorial, we said that changing these values was the same as applying a DC offset to the LFO wave, i.e. the zero crossing line has a non-zero value! So, if you route a LFO that has been shifted in this way to the frequency of another oscillator you are, in effect sending two values. One is the LFO amplitude, which will change over time and the other is the DC offset which is a constant. This DC offset will have to be allowed for by adjusting the pitch of the sound generating oscillator to get it back into tune.

So, if you have an out of tune MIDI line, check what is modulating the frequency!

Polyphony - a word about resources

All soft synths are serious processor hogs. A lot of effort has gone into minimizing the hit that the WAE will make on your processor but you can't cheat physics. Making complex sounds in realtime means doing hard sums very fast and there will be a limit to the strain your CPU can take.

Note: The polyphony a synth will play with the Polyphony ("Poly") setting in the Network Editor. Note: This setting does not display in FX Networks which have no concept of polyphony.

Tips

  • If your piece can use built-in wavetable (e.g. for basic drum sounds), or custom audio samples, then consider using them where possible rather than the modular synth. Remember that sample-based drum sounds can be very effective.
  • Very importantly, use a polyphony value that is as small as your piece can get away with!
  • If you wish any FX to apply to all Cells in a Track, to save processing cycles put them in Track FX (see the Network Editor) rather than directly in your synth module design.
  • Be economical with units. Think about ways in which you can maybe use one unit more than once in a voice.

Finally, a word about polyphony. With the WAE, each MIDI line can become an independent, polyphonic synthesizer.

But rather than always thinking of the WAE as a polyphonic synthesizer, you can think also think about it as a synthesizer that can have multiple instances of a Synth Network. If you set the "Poly" parameter to 2 or more, what the WAE does is create the corresponding number of identical synth networks that can operate simultaneously, one for each possible note. So, setting your "Poly" parameter high is an excellent way to use up your processor resources - which you will want to try to conserve. Use it with care.

OK, enough of the preliminaries. Lets get on with making some sounds. The terminology and concepts we will be using will assume you are up to speed!

Simple subtractive synthesis

This is how to set up the WAE as a simple two oscillator synth in the classic style. We'll go through this in some detail because, once you have got the principles of the WAE established, working in more adventurous ways gets much, much easier.

Firstly, we need to create a piece. From Wotja create an new mix (Menu > New) and from the popup Template list Seed (Pak) > Ambient. You will then have a mix or piece that will play long notes. Save this piece as "MyTest".

Launch the Synth Network Editor and set the poly to be 1 or more. Once you set a tone generator in your synth module design, this will then override any MIDI patch settings that your piece is using.

So: we need to design the module that our MIDI line will use. As we are going to make a classic kind of synth we will need two tone generators, a filter and an envelope to control it.

Add the following by tapping on a blank area in the Synth Network: Unit 1 - "Ctrl-Envelope", Unit 2 - "TG Oscillator"; Unit 3 - "TG Oscillator"; Unit 4 - "Filter".

Using an Audio-rate Junction

Hold on - the filter is only fed from the output from the unit immediately before it; and what we really want is to feed the filter with the combined outputs from units 2 and 3! To do this, we need to route the two tone generators into the filter unit. How we do that is fundamental to getting the WAE to work for you!

Tap/hold Unit 4 (the Filter) and press the "Add Before" button and then select a "Junction"; your Filter is now moved to become unit 5! When the Junction Unit is selected, in the bottom Connector & Controllers area tap the Add button twice. Make sure that the first input item of the two inputs you've just added comes from Unit 2 (the first tone generator), and make sure that the second of the two inputs comes from Unit 3 (the second tone generator). You can set relative scaling factors for the two input units by playing with the scaling factors.

Here is the text that we get if we now press the "Export" button on the synth module editor window (we could subsequently reimport this if we need to by highlighting the text, copying it and pressing the "Import" button):

<fxm>
<unit t="c/envelope" r="c"/> 
<unit t="tg/osc"/>
<unit t="tg/osc"/> 
<unit t="j" i="2,1.;3,1."/> 
<unit t="filter"/>
</fxm>

The audio-rate junction you've just added takes the the signals from the two tone generators, and adds them together. The output from your audio-rate junction automatically feeds the filter unit to its right.

OK, that's the network built. Now lets fine-tune our settings.

Tap unit 2 to display the Oscillator Unit. There is a list control where you can select the wave shape for this tone generator. We want a saw wave. The direction of the slope isn't relevant. Close unit 2, then tap unit 3 to display the second Oscillator Unit.

Select a sawtooth wave for the second tone generator. Please make sure its direction is the same as its twin in unit 2 or else they will cancel each other out and you won't hear much! :)

To make a big sound, set one of the tone generators to work an octave lower than the other. You can do this with the one in Unit 2 by setting the Octave offset to 1.

Once you've done all that, tap unit 5 (the filter) to open the Filter Unit. Set the filter type to "low pass" and adjust the cutoff frequency and Q (resonance) to taste. The filter will automatically sweep unless you tell it otherwise.

Here's what the exported module now looks like:

<fxm> <unit t="c/envelope" r="c"/> <unit t="tg/osc"p="1280=2;1287=1;1030=1;1031=1;1026=0;1033=0;1034=0;1028=400000;1281=1.;1282=0.;1283=50.;1284=50.;1285=50.;1288=-1.;1289=1.;1035=0.;1040=0;1042=10;1044=10;1046=50;1048=10;1050=0;1052=400;1054=100;1056=50;1058=0;"/><unit t="tg/osc"p="1280=2;1287=1;1030=1;1031=1;1026=0;1033=0;1034=0;1028=400000;1281=1.;1282=0.;1283=50.;1284=50.;1285=50.;1288=-1.;1289=1.;1035=0.;1040=0;1042=10;1044=10;1046=50;1048=10;1050=0;1052=400;1054=100;1056=50;1058=0;"/><unit t="j" i="2,1.;3,1."/> <unit t="filter"/></fxm> 

Next, lets use the control-rate envelope (unit 1) to modulate the frequency of our first tone generator (unit 2). Select unit 2, and and in the bottom "Connectors & Controllers" area add a controller by pressing the "Add" button. Set the source Unit to be unit 1 (our envelope), and set the Param(eter) to be Frequency. Your envelope will now be modulating the frequency of your LFO! Use the Scale slider to adjust the amount of modulation. Select unit 1 if you want to modify the shape of your envelope.

Note that the envelope editor display might look a bit complex to start with, but it it's not really. It can be used to send out negative as well as positive values (it is bipolar!).

For example, you might want an envelope shape that rises slowly to a maximum, falls down to a low level rather slowly and tails off to nothing once the note has ended. So you could set the attack time to around 5 seconds, the decay time to just less than 4, a very low sustain level and a release time of half a second.

Once you have an envelope shape you like it is then just a matter of playing around with things until you get the exact sound you want. Note that you can also use control-rate LFOs to modulate parameters; and many units have a large range of parameters that you can experiment with modulating.

Anyways, back to our example: you should hear a more familiar, if rather overused, sound. If you go back to one of the tone generators and tweak the "Micro Offset" value a bit you will find that fattens up the sound nicely.

For a final touch you might want to add some reverb. This is best done by using it as a global effect for the entire piece because you might have several voices that you want to treat similarly.

If you close the Synth Network Editor you'll be back to the main application window. Press the "Global FX" button to open the FX Network Editor. This looks and works just like the Synth Network Editor you saw before, but this is now being used to edit global FX for the entire piece. Make sure to add an FX of type "reverb", and change the settings in the unit to get the sound you want. Then, close the Unit.

And there we have it. One classic, filter swept pad in the traditional subtractive style. Easy!

Now we have a sound that works it is a good idea to save it for use in other pieces. As noted above, you can export & import data directly via the clipboard and a text editor at various levels of the tool; this makes copying sounds around from piece-to-piece very easy.

If we export the settings from the Synth Network Editor the text should look something like this (depending on exactly what you did!). We need this by the way for our next tutorial step.

<fxm><unit t="c/envelope" r="c"/><unit t="tg/osc" p="1280=2;1287=1;1030=1;1031=1;1026=0;1033=0;1034=0;1028=400000;1281=1.;1282=0.;1283=50.;1284=50.;1285=50.;1288=-1.;1289=1.;1035=0.;1040=0;1042=10;1044=10;1046=50;1048=10;1050=0;1052=400;1054=100;1056=50;1058=0;" c="1#1029,.058"/><unit t="tg/osc" p="1280=2;1287=1;1030=1;1031=1;1026=0;1033=0;1034=0;1028=400000;1281=1.;1282=0.;1283=50.;1284=50.;1285=50.;1288=-1.;1289=1.;1035=0.;1040=0;1042=10;1044=10;1046=50;1048=10;1050=0;1052=400;1054=100;1056=50;1058=0;"/><unit t="j" i="2,1.;3,1."/><unit t="filter"/></fxm>

Waveshaping

This sounds similar in some ways to Voice 1. But this time, instead of using a filter module to remove harmonics and animate the sound we will use an envelope to change the waveform shape over the duration of each note.

If you recall some of the things we covered in the previous tutorial you will realize that changing the waveshape will change the harmonic content of the sound. And, if we get it right, we'll end up with something that sounds like a traditional filter sweep without the CPU hit that the filter involves. So, really, we are almost using additive methods to make this sound. And it is more economical. Great!

Go back your piece above and open it.

Select the filter unit and press the Delete button to remove it. The last unit is now the audio-rate junction unit, which just adds the two tone generators together.

Open up the Editors for the two tone generators. Change the wave type for each of them to STS. You'll notice that you get some interesting control sliders for this wave type.

Here is the synth module definition at this stage:

<fxm><unit t="c/envelope" r="c"/><unit t="tg/osc" p="1280=5;1283=41.;1284=32.;1285=36.;1048=10" c="1#1029,.058"/><unit t="tg/osc" p="1280=5;1283=44.;1284=57.;1285=59.;1048=10"/><unit t="j" i="2,1.;3,1."/></fxm>

It may not sound that interesting so far, but the STS wave is one of the quietly outstanding features of the WAE. If you couple that with modulation, and keep going, you will see why. The three parameters, controlling the up/down ratio, squareness and slope give you the capacity to morph a waveshape.

It might be a good idea to set up a simple voice just using this waveshape in a single tone generator and play around with the sliders to get the feel for what you can do with this. Basically, if you set the up/down to 100%, squareness to zero and right/left% to either 100% or zero you will hear a sawtooth wave. If you now move the right/left slider towards the center you will hear the sound mellow until, at 50%, you get a triangle wave. Now move the squareness slider and you hear the sound harden again as the wave become more pulse like. We already know that changing the up/down ratio of a square wave (the duty cycle) will change the harmonic character in other ways. Check it out!

So, by varying these three parameters in different ways in real time you can generate some excellent harmonic changes without resorting to a filter. Lets do it!

We don't need to change the current Envelope settings, but you can play with this if you like. But we do want to route the envelope controller (unit 1) to the appropriate destination!

In the bottom Connectors & Controllers area, for both units 2 and 3, add a controller from unit 1. Ensure that this new controller is used to modulate the Up/Down Ratio parameter. Now do this again, adding new controllers, but this time to use unit 1 to also modulate the Squareness Ratio. Then do this again for the Slant ratio!!

As this is the "suck it and see" school of synthesis, the next bit is down to you and your ears. Hit play and adjust the settings levels on these parameters, the envelop and the scale factors)until you get a sound you like. You'll find that if you overdo the levels you can flatten the waveshape out and lose the sound altogether.

Here is the synth module definition at this stage (it is worth a listen):

<fxm><unit t="c/envelope" r="c" p="1042=0;1044=0;1046=4168"/><unit t="tg/osc" p="1280=5;1283=31.;1284=57.;1285=31.;1048=10" c="1#1029,.016;1#1293,.457;1#1290,1.679;1#1294,-1.251"/><unit t="tg/osc" p="1280=5;1028=5900;1283=28.;1284=41.;1285=35.;1048=10" c="1#1293,.661;1#1294,.533;1#1290,.771"/><unit t="j" i="2,1.;3,1."/></fxm>

It shouldn't take you too long to find settings that sound like the filter sweep we created in the first example. If you check this sound with the one from the first example with a Filter Unit you'll find that this approach actually gives you a greater range of harmonics than using a simple filter. The sound will tend to be richer and brighter, sitting up in the mix more perhaps.

Gentle Ring Modulation

We can use the ring modulator mode of the "osc" unit to give some quite pleasant quality tones that are very similar to those you get from basic amplitude modulation. The key is to make sure that both the tone generators track the pitch of the composed notes.

A ring modulator has to have two inputs for you to hear anything. If you just load up the ring modulator on its own you'll hear nothing. The WAE oscillator use the internal oscillator as one permanent input. All you need to do is route another source into the ring modulator and off you go.

Change one of your modules such that it is one "osc" unit followed by another "osc" unit. Be sure to check the "ring-modulate?" checkbox on the second unit; verify that the "Use MIDI Notes?" checkbox is also checked.

If you play with the various oscillator parameters you'll discover that the harmonic content of the sound generated depends mostly on how far apart the two tones being modulated are.

Ring Modulated weirdness

Go back to your Ring Modulating unit. Uncheck the "Use MIDI notes".

What you get is a weird, metallic noise! The quality of the noise will depend upon the relationship between the frequency coming in from the tone generator and that of the oscillator in the ring modulator. Adjust this frequency until you get a cleaner, bell like tone. It should be somewhere around 700 Hz.

If you want things to get dafter, add a control-rate LFO "(c/lfo") to modulate the ring modulator's oscillator frequency. Try this. Add a control-rate lfo ("c/lfo") as the first unit. Set the wave type of this LFO to Random and the type to Step. Set the frequency to 2 Hz. Now add this unit as a modulator controller of the ring modulator frequency. Hit play! :)

What you should be getting now is weird, randomized electronic chime noises that change every half second. Strange, isn't it?

You can use SF2 samples as the source as well as another WAE module so you can do ring mod sound warping to your own samples in realtime. And who wouldn't want to do that?

Particles. Making ring modulation look ordinary

Now if you thought ring modulated noises were strange, check out this option. As an alternative to a comprehensive tone generator module, the WAE includes the Particle generator.

The concept is based on granular synthesis. This module generates little wavelets of sound punctuated by little sections of silence. With careful control of the comprehensive set of parameters on offer you can generate the most unworldly sounds.

A little alert before we start. This module does a lot of maths! Don't overuse it in a piece or there won't be much processor time left for anything else.

We'll use it to create an Sci-fi movie background music sort of thing.

Open the "MyTest" mix/piece you created above, and delete the Synth Network you made. Add a Particle Unit as your only unit for MIDI line 1. And that's it! :)

Well, not really. The difficulty now is that this all gets very subjective and rather hard to write about. You just need to hit play and then adjust the many parameters on offer in the Particle module until you get a sound you like. So instead lets just check out the key variables.

The harmonic parameter is one of the most influential factors on the end sound. Low values will keep the base frequency of wavelets close to each other. Larger values will mean much greater differences between individual wavelets and a much wider harmonic range to the sound.

Frequency velocity is like a mini pitch envelope applied to each wavelet. Small values give nice detunes and sweeps. Larger values can cause queasiness!

The attack, sustain and decay parameters are like a mini amplitude envelope for each wavelet. Small values make each wavelet distinct and audible. Larger values will cause a smearing and blending of the sounds which is not unpleasant.

Pause governs the time between each wavelet.

The "Number of Elements" value sets the number of wavelets to be generated. Set this lower and reduce the processor hit for this module.

You will hopefully have noticed that every parameter can be modulated by another unit, so there is plenty of scope to sculpt some quite unique and complex pieces with this little baby!

This is just one kind of the strange little things you can get out of it (it is worth a listen):

<fxm><unit t="tg/particle" p="1280=1046;1281=.297;1282=.175;1283=.379;1284=0.;1285=.033;1286=0.;1287=.181;1291=9"/></fxm>

DSynth - The Drum Synthesizer

This one is a little bit different because, with this beast, you can achieve so much. So some explanation is in order first.

To make decent percussive sounds using a modular synthesizer takes quite a few modules, most of which would be rather over specified for the task to hand. Such an approach would waste a lot of computational resources. So we took a different path.

The drum synth module incorporates just the tools you need to create a huge range of tuned and untuned percussive sounds with no waste. It looks a bit complex at first sight because it packs a lot into a small area of screen but once you get the hang of it you'll love it.

The module incorporates three tone generators – two generate sine waves, one generates colored noise. The noise generator has a multi-type resonant filter. Each tone generator has its own simple attack/decay envelope that controls the amplitude. This envelope can also be routed to control pitch in the case of the sine wave generators and the filter cutoff frequency for the noise generator.

The output of the three generators is added together so you control the mix between them using the envelope level parameter. A word of warning – this module has been designed to kick - it goes loud.

One sine wave generator is designated the master and can be set to any frequency from the low 40’s to about 900 Hz. The other sine wave generator slaves to this frequency, i.e. its setting is a ratio of the frequency of the first one. We do this mostly to save CPU resources (the slave oscillator’s maths are slightly less taxing)

One thing worth noting is that the two sine wave generators can cross-modulate the other’s frequency. What’s the point of this?

Well, using the output of one sine wave generator to modulate the frequency of the other will give some metallic-like tones. It is called frequency modulation synthesis. Exactly how metallic will depend upon the difference between the frequencies of the two generators and on the depth of the modulation.

If you then take that modulated output and make a loop so it modulates the frequency of the first tone generator (modulate the modulator as it were!) then the results can get even more harsh and chaotic. At high modulation depths this is just what you need to start to create struck metal percussive effects. Lower depth values will dirty up drum sounds for you rather nicely.

You can force this module to track composed note values. There are loads of possible uses of this feature. The obvious one is to get several percussion instruments for the price of one. If you want to set up an alternating high/low cowbell figure simply load up the relevant preset, enable note tracking on this module and set up a pitched fixed voice type or something similar to take care of the tuning. You can also create a whole battery of tuned percussive instruments; marimbas, bells by using this option.

Enjoy!

And that just about concludes this quick jaunt through the practical application of the WAE. We've really just scratched the surface but hopefully you have collected enough pointers from this and the previous tutorial to make your own way from here.


Glossary

Tone Generator (TG) Unit : A unit that knows how to generate sound in response to MIDI note events. These are the Wavetable, DSynth, Oscillator and Particle units. You can have as many TG Units in your design as you want, subject to the processing power of your target platform.

FX Unit : An audio processing stage which can be used to perform a variety of exciting things. You can have as many FX Units in your design as you want, subject to the processing power of your target platform.

Synth / FX Network: A grouping of all units used by a particular Synth or FX (Global FX or Track FX). Think of it in terms of a row of audio-rate units that work from left-to-right.

Audio-Rate Unit : An unit that works at the normal audio processing rate of the system, e.g. Wavetable Unit.

Control-Rate (Ctrl) Unit : A unit that works at a lower rate than the normal audio processing units and is used to control parameters on other units. These are the Ctrl-LFO, Ctrl-Envelope and Ctrl-Amp units.

LFO: Low Frequency Oscillator. The Ctr-LFO Unit can be used to control other effects unit parameters such as filter cutoff frequency or perform pitch modulation. The audio-rate LFO (Osc) can be used as a direct frequency generator, or to apply Ring Modulation effects if run at a low enough frequency.

Envelope: A Control-Rate Unit that creates a waveform in direct response to a note on MIDI event; used to modulate various critical parameters within audio-rate or control-rate Units. For example, envelopes are used to shape the volume of a note when it is triggered, and can also be used for all sorts of neat effects such as modulating the pitch of a note while it plays.

Wotja 22 Script Engine

Wotja Script Engine icon

The Wotja Script Engine ("WSE") allows programmatic control of WME parameters. It's use is entirely optional but it comes into its own when creating "Adaptive Music".

The Wotja Script Editor is accessed from Wotja as follows:

The Wotja Script Sandbox is accessed from Wotja as follows:

Wotja Scripting is aimed at generative music fans who want to "hack" Wotja, coders and hackers who want to play with music, and anybody who uses Wotja and wants to push the outer limits of what Wotja can do out of the box.

Tip for iOS Users: To get a "standard iOS" text editor with copy/paste etc, just select Action menu > Edit... You can then use normal iOS operations to copy/paste etc.

The Wotja Script language is based on the widely used ECMAScript scripting language (ECMAScript E5/E5.1). ECMAScript (also referred to commonly by the name JavaScript), is very powerful, fast and easy to learn. ECMAScript is a very popular embedded scripting language, and is widely used in the web, gaming and multimedia worlds. Wotja adds various Wotja-specific functions to the language. These extensions are outlined later in this document; we call them "Event Handler Script Functions" or "Triggers". We give you lots of examples to get you started.

Wotja Scripts and Wotja Scripting (hereafter just "scripts", scripting etc.) can be used in two separate contexts:

  • Event Handler Script Functions ("Triggers")

    The most common way to use scripting in Wotja is to use the Script Editor Window accessed from the WME Generator Scripts and Cell Scripts and Mix Scripts cells. This allows you to create Event Handler Script Functions ("Triggers"), which are small bits of code in the widely used ECMAScript language. The specially named Event Handler Script Functions in these scripts are triggered when various events happen when a mix is playing. Using Event Handler Script Functions allows you to tell the Generator or Mix Objects to behave in very powerful ways while the mix is playing.

  • Sandbox Scripts

    You can use the Wotja Sandbox script window to experiment with Script code. You can show the Wotja Sandbox from the main Mix screen (press the Action menu button, and select the Script Sandbox item).

Why would you want to use Scripting?

Are you a generative music fan who wants to see what your own custom code can achieve when leveraging a hugely powerful app such as Wotja? Are you code hacker who want to play with music? Are you a Wotja expert who wants to push the outer limits of what Wotja can do out of the box?

With careful use of Wotja's Event Handler Script Functions, you can do a lot of cool things, while turning Wotja into a custom hyper-instrument.

You can, if you wish, create Event Handler Script Functions to run in response to the following events:

  • start of playback
  • every bar
  • when a note is composed by the WME
  • end of playback
  • in response to external MIDI CC via e.g. keyboard controller
  • in response to external MIDI Note on/off via e.g. keyboard controller

Every script can manipulate a large number of things in Wotja in real-time. Some examples: manipulating music rules, playing with mutation, altering patterns; and what have you.

By creating code to respond to external MIDI events, you can in turn manipulate various properties of Wotja, such as auto-chording parameters, rule settings etc.

User Interface Updates

If you change a property with a script function such as wmeParameterSet, the user interface doesn't always update to reflect your call; you'd need to refresh the table that displays your updated parameter, to see the change in the user interface. We hope to be able to improve this behavior at some future point.

If you change a parameter with the user interface, and that parameter is later changed by a script; the latter script call will override your user interface change. Don't get confused by this!

If you have a script which copies a parameter value at start, and then resets it when the mix stops; where you've in between changed the parameter through the user interface; the latter script call will override your user interface change. Don't get confused by this!

Latency and Timing

The WME composes events a little bit in advance of when you'll hear them. This is to ensure that the notes are composed, in time for them to be picked-up by the WAE; the system also does the audio processing required by the WAE a little ahead of time before you actually hear it. Added together, this means that script code run in response to, say, onWmeBar won't always appear precisely synchronized to what you're listening to!

Infinite Loops

Please be careful not to implement so-called Infinite Loops in your script code, as that might cause the Wotja application to crash.

Recursion (recursive function calls)

Please be careful not to write script code that results in a lot of Recursion, as that might cause the Wotja application to crash.

Scripting Interface

Wotja Script Editor

Script Editor
Click image for large

The Wotja Script Editor Window

When you decide to edit a Mix Script or Cell Script or Generator Script parameter, or if you select the Script Sandbox menu item, you are presented with the Script Editor window. It supports syntax-colored code editing and a console window at the bottom lets you capture logs from your scripts.

  • Mix/Cell/Generator Script Editor

    In this mode, the top panel allows you to edit Wotja Script Functions associated with your Mix or Cell or Generator..

  • Script Sandbox

    In this mode, it is used to create and run scripts that aren't saved, and that don't access Mix properties. It is there for you to experiment with Wotja Script!

The top panel allows you to edit Wotja Script Functions associated with your object.

The panel can contain as many functions as you want, or as few as you want. Leave it blank if you don't want to use any scripting.

Tip for iOS Users: To get a "standard iOS" text editor with copy/paste etc, just select Action menu > Edit... You can then use normal iOS operations to copy/paste etc.

Here is an example with just one trigger script function:


// Just one function!

function onWmeBar(bar) {
  wjsLog ("onWmeBar: Bar number=" + bar)
}

Here is an example with three trigger script functions:


// Three functions!

function onWmeStart() {
  wjsLog ("onWmeStart!")
}

function onWmeBar(bar) {
  wjsLog ("onWmeBar: Bar number=" + bar)
}

function onWmeStop() {
  wjsLog ("onWmeStop!")
}

Test & Apply (only for Generator Script or Cell Script or Mix Script)

Pressing this button will compile any Wotja Script that you type in the large text area at the top of the window, and if the script looks valid, it will send the script to be stored within the Mix. It will take effect immediately (if your Mix is running).

Run Script (only for Script Sandbox)

Pressing this button will compile any Wotja Script that you type in the large text area at the top of the window, and display any results in the bottom panel. Use Run Script to quickly check your script for obvious syntax errors.

Note that any changes you make here aren't saved within the mix.

Open

Pressing the Open button displays the Wotja Scripts Window, where you can select a Wotja Script file from either built-in examples, or from ones you've saved yourself (which have a .wotjascript extension). Your saved custom scripts are listed in the top section; you can save your own custom scripts in this section, by using the Save button.

Save

Pressing the Save button lets you save the contents of your Script editor window to a document with the .wotjascript extension. You can then easily find and re-open that Script using the Open button (your saved custom scripts are listed in the top section).

Help

Pressing the Help button displays help on Wotja Scripting system!

Back (<)

Pressing the Back (<) button will close the screen. If you're editing a Generator Script or Cell Script or Mix Script, you'll first be prompted to save or discard any changes you might have made.

Action

Pressing the Action button will show the following popup menu (a Pro Feature Set is required to use them):

  • Edit... (iOS): Allows you to edit in a "standard iOS" text editor with standard iOS copy/paste etc.
  • Clear Script: Select this to clear the script.
  • Export to Clipboard (iOS): Exports script to clipboard.
  • Import from Clipboard (iOS): Imports script from clipboard.

Cancel

Pressing the Cancel button will discard your changes.

Test Results

Any test results are displayed in the Test Results area at the bottom.

Clear

Pressing the Clear button in the bottom area, quickly erases the text in the bottom panel.

See Also

Event Handler Script Functions ("Triggers")

Triggers can be assigned to most Objects, including the Cell and Generator Objects.

You can enter these scripts using the following parameter groups / views:

Logging output to the Script console with wjsLog

The wjsLog function may be used to write text to the Script Console; this is very useful for debugging your scripts!

Wotja Scripts Window

The Wotja Scripts window lets you select from a number of built-in scripts that are provided by Intermorphic. There are simple implementations of each of the Event Triggers functions for Generator Scripts or Cell Scripts or Mix Scripts, and there are a large number of Cookbook scripts for both Generator and Mix. The Cookbook scripts which are often quite detailed, and which are designed to help you get started with writing your own scripts.

When in this Window, select the item you wish to use in the Script Editor.

The top section lists any Scripts that you might have saved yourself; you can press the "Trash Can" icon to delete your user script.

Generator - Scripts

The Generator Scripts parameter allows you to embed small Event Handler Script Functions, which are small bits of code in the widely used JavaScript language, that are triggered when various events happen when the Generator is playing. Specially named Event Handler Script Functions in these scripts are triggered when various events happen when a Generator is playing.

Start

The onWmeStart Event Handler Script Function is called once at the start of the Generator's owning cell, when that cell starts playing.

The function has no parameters.


function onWmeStart() {
  wjsLog ("Generator start!")
}

Bar

The onWmeBar Event Handler Script Function is called at the start of every bar while the mix is playing in its cell, starting from 1.

The function has one parameter:

  • bar   the bar number, starting from 1.

function onWmeBar(bar) {
  wjsLog ("Generator Bar number=" + bar)
}
  

Stop

The onWmeStop Event Handler Script Function is called once at the end of the Generator's owning cell, just as that Cell stops playing.

The function has no parameters.


function onWmeStop() {
  wjsLog ("Mix stop!")
}
  

Composed

The onWmeGeneratorComposed Event Handler Script Function is called when the Generator composes a note. Use this to emit MIDI CC events and what have you.

The function has five parameters:

  • generatorIndex   the generator index, starting from 0.
  • noteon   a value indicating if this is a note on event - true means note on, false means note off.
  • channel   the MIDI Channel, from 0 to 15 (MIDI channel is actually displayed in the WME Network screen as 1 to 16)
  • pitch   the MIDI pitch of the composed note, from 0 to 127.
  • velocity   the MIDI velocity of the composed note, from 1 to 127.

function onWmeGeneratorComposed(generatorIndex, noteon, channel, pitch, velocity) {
  wjsLog ("Generator Composed index=" + generatorIndex + ", noteon=" + noteon + ", channel=" + channel + ", pitch=" + pitch + ", velocity" + velocity)
}
  

User Controller Changed

The onWmeGeneratorUserController Event Handler Script Function is called when either of the Generator's User Controllers output value changes.

The function has three parameters:

  • generatorIndex   the generator index, starting from 0.
  • controllerIndex   the zero-based index of the controller; 0 means User Controller 1, 1 means User Controller 2.
  • value   the controller's new value, from 0 to 127.

function onWmeGeneratorUserController(generatorIndex, controllerIndex, value) {
  wjsLog ("onWmeGeneratorUserController, generatorIndex=" + generatorIndex + ", controllerIndex=" + controllerIndex + ", value=", + value)
}

MIDI In CC

The onMIDIInCC Event Handler Script Function is called whenever a MIDI CC event is received by the MIDI Input device.

The function has three parameters:

  • channel   the MIDI Channel, from 0 to 15 (MIDI channel is actually displayed in the WME Network screen as 1 to 16)
  • cc   the CC event identifier, from 0 to 127.
  • value   the value of the CC event, from 0 to 127.

Note that your script will only respond to MIDI In CC Events that target the MIDI Channel that your generator is attached to.


function onMIDIInCC(channel, cc, value) {
  wjsLog ("Generator onMIDIInCC channel=" + channel + ", " +  cc + ", " +  value)
}
  

MIDI In Note

The onMIDIInNote Event Handler Script Event Handler Script Function is called whenever a MIDI Note On or Off event is received by the MIDI Input device.

The function has four parameters:

  • channel   the MIDI Channel, from 0 to 15 (MIDI channel is actually displayed in the WME Network screen as 1 to 16)
  • noteon   a value indicating if this is a note on event - true means note on, false means note off.
  • pitch   the MIDI pitch of the note event, from 0 to 127.
  • velocity   the velocity of the note event, from 0 to 127.

Note that your script will only respond to MIDI In Note Events that target the MIDI Channel that your generator is attached to.


function onMIDIInNote(channel, noteon, pitch, velocity) {
  wjsLog ("Generator onMIDIInNote channel=" + channel + ", noteon=" + noteon + ", " +  pitch + ", " +  velocity)
}
  

See Also

Cell - Scripts

The Cell Scripts parameters allow you to embed small Event Handler Script Functions, which are small bits of code in the widely used JavaScript language, that are triggered when various events happen when the Cell is playing. Using Event Handler Script Functions. These scripts allow you to tell the Cell to behave in very powerful ways while it is playing.

Start

The onWmeStart Event Handler Script Function is called once at the start of the Mix's owning cell, when that cell starts playing.

The function has no parameters.


function onWmeStart() {
  wjsLog ("Mix start!")
}

Bar

The onWmeBar Event Handler Script Function is called at the start of every bar while the mix is playing, starting from 1.

The function has one parameter:

  • bar   the bar number, starting from 1.

function onWmeBar(bar) {
  wjsLog ("Bar number=" + bar)
}
  

Stop

The onWmeStop Event Handler Script Function is called once at the end of the Mix's owning cell, just as that Cell stops playing.

The function has no parameters.


function onWmeStop() {
  wjsLog ("Mix stop!")
}
  

MIDI In CC

The onMIDIInCC Event Handler Script Function is called whenever a MIDI CC event is received by the MIDI Input device.

The function has three parameters:

  • channel   the MIDI Channel, from 0 to 15 (MIDI channel is actually displayed in the WME Network screen as 1 to 16)
  • cc   the CC event identifier, from 0 to 127.
  • value   the value of the CC event, from 0 to 127.

function onMIDIInCC(channel, cc, value) {
  wjsLog ("Mix onMIDIInCC channel" + channel + ", " +  cc + ", " +  value)
}
  

MIDI In Note

The onMIDIInNote Event Handler Script Event Handler Script Function is called whenever a MIDI Note On or Off event is received by the MIDI Input device.

The function has four parameters:

  • channel   the MIDI Channel, from 0 to 15 (MIDI channel is actually displayed in the WME Network screen as 1 to 16)
  • noteon   a value indicating if this is a note on event - true means note on, false means note off.
  • pitch   the MIDI pitch of the note event, from 0 to 127.
  • velocity   the velocity of the note event, from 0 to 127.

function onMIDIInNote(channel, noteon, pitch, velocity) {
  wjsLog ("Mix MIDI in note=" +  noteon + ", " +  channel + ", " +  pitch + ", " +  velocity)
}
            

See Also

Mix - Scripts

The Mix Scripts parameters allow you to embed small Event Handler Script Functions, which are small bits of code in the widely used JavaScript language, that are triggered when various events happen when the mix is playing. Using Event Handler Script Functions allows you to tell the Mix to behave in very powerful ways while it is playing.

Start

The onWmeStart Event Handler Script Function is called once at the start of the Mix playing.

The function has no parameters.


function onWmeStart() {
  wjsLog ("Mix start!")
}

Bar

The onWmeBar Event Handler Script Function is called at the start of every bar while the mix is playing, starting from 1.

The function has one parameter:

  • bar   the bar number, starting from 1.

function onWmeBar(bar) {
  wjsLog ("Bar number=" + bar)
}
  

Stop

The onWmeStop Event Handler Script Function is called once, just as the Mix stops playing.

The function has no parameters.


function onWmeStop() {
  wjsLog ("Mix stop!")
}
  

MIDI In CC

The onMIDIInCC Event Handler Script Function is called whenever a MIDI CC event is received by the MIDI Input device.

The function has three parameters:

  • channel   the MIDI Channel, from 0 to 15 (MIDI channel is actually displayed in the WME Network screen as 1 to 16)
  • cc   the CC event identifier, from 0 to 127.
  • value   the value of the CC event, from 0 to 127.

function onMIDIInCC(channel, cc, value) {
  wjsLog ("Mix onMIDIInCC channel" + channel + ", " +  cc + ", " +  value)
}
  

MIDI In Note

The onMIDIInNote Event Handler Script Event Handler Script Function is called whenever a MIDI Note On or Off event is received by the MIDI Input device.

The function has four parameters:

  • channel   the MIDI Channel, from 0 to 15 (MIDI channel is actually displayed in the WME Network screen as 1 to 16)
  • noteon   a value indicating if this is a note on event - true means note on, false means note off.
  • pitch   the MIDI pitch of the note event, from 0 to 127.
  • velocity   the velocity of the note event, from 0 to 127.

function onMIDIInNote(channel, noteon, pitch, velocity) {
  wjsLog ("Mix MIDI in note=" +  noteon + ", " +  channel + ", " +  pitch + ", " +  velocity)
}
            

See Also

Scripting Objects

Objects and Parameters

The following table lists the various Objects and their associated parameters together with how those objects/parameters are available to Wotja Scripts, showing: the object name; the parameter group / view (where shown to a user); the displayed name (where shown to a user); the parameter name (as supplied to functions and which is always unique for a given object); and the range of legal values that you may supply.

Object: "Generator" (AKA Generator)

Parameter Group / View Displayed Name Script Parameter Name Notes
Generator - Basics Name "Generator" Generator name
  Mute "Mute" Yes or No
  Patch "Patch" Value in range 0 to 127
  Use Patch? "Use Patch?" Yes or No
  MIDI Channel "MIDI Channel" Value in range 0, 16
  Generator Type "Generator Type" "Rhythmic", "Ambient", "Follower", "Repeater", "Patterns", "Listening"
  Pitch "Pitch" Value in range 0 to 127
  Pitch Range "Pitch Range" Value in range 11, 127
  Phrase Length "Phrase Length" Value in range 1, 256; also in Generator - Ambient
  Phrase Length Range "Phrase Length Range" Value in range 0, 256; also in Generator - Ambient
  Phrase Gaps "Phrase Gaps" Value in range 0, 256; also in Generator - Ambient
  Phrase Gaps Range "Phrase Gaps Range" Value in range 0, 256; also in Generator - Ambient
  Note Rest % "Phrase Note Rest %" Value in range 0, 100; also in Generator - Ambient
Generator - Ambient Units "Ambient Units" "Seconds (thousandths of a)", "Beats (60ths of a)", "Full seconds"
  Duration "Ambient Duration" Value in range 0, 32000
  Duration Range "Ambient Duration Range" Value in range 0, 32000
  Gap Minimum "Ambient Gap Min" Value in range 0, 32000
  Gap Range "Ambient Gap Range" Value in range 0, 32000
Generator - Follower Follow Generator "Follow Named Generator" Generator name
  Percent "Follow Percent" Value in range 0, 100
  Strategy "Follow Strategy" "Chordal Harmony", "Interval Within Scale Rule", "Semitone Shift"
  Units "Follow Delay Unit" "Seconds (thousandths of a)", "Beats (60ths of a)", "Full seconds"
  Delay "Follow Delay" Value in range 0, 32000
  Delay Range "Follow Delay Range" Value in range 0, 32000
  Shift/Interval "Follow Shift/Interval" Value in range -60, +60
  S/I Range "Follow Shift/Interval Range" Value in range -60, +60
Generator - Repeater Generator "Repeat Specific Generator" Generator name
  Percent "Repeat Bars Percent" Value in range 0, 100
  Bars "Repeat For Bars" Value in range 1, 100
  History Range "Repeat Bar History Range" Value in range 0, 100
  History "Repeat Bar History" Value in range 1, 100
  Bars Range "Repeat For Bars Range" Value in range 0, 100
Generator - Patterns Patterns "Patterns" Pattern String
  Use Percent "Patterns Use Percent" Value in range 0, 100
  Mutation Factor "Mutation factor" Value from 0 to 1000 (corresponding to 0 to 100 percent)
  Bars Between "Mutate No. Bars" Value in range 0, 100
  Bars Range "Mutate No. Bars Range" Value in range 0, 100
  Mutate Rhythm? "Mutation of Rhythm" Yes or No
  Meter "Meter" "1:4", "2:4", "3:4", "4:4", "5:4", "6:4", "7:4", "8:4", "1:8", "2:8", "3:8", "4:8", "5:8", "6:8", "7:8", "8:8", "9:8", "10:8", "11:8", "12:8"
Generator - Text to Music Text Pattern Enabled "Text Pattern Enabled" Yes or No
  Text Pattern Text "Text Pattern Text" TTM Text String
  Text Pattern Phrase Length "Text Pattern Phrase Length" Value in range 1 to 16
  Text Pattern Phrase Range "Text Pattern Phrase Range" Value in range 0 to 16
  Text Pattern Gaps "Text Pattern Gaps" Value in range 0 to 16
  Text Pattern Gaps Range "Text Pattern Gaps Range" Value in range 0 to 16
  Text Pattern Interval "Text Pattern Interval" Value in range 0 to 36
  Text Pattern Interval Range "Text Pattern Interval Range" Value in range 0 to 36
  Text Pattern Improvise After Tune "Text Pattern Improvise After Tune" Yes or No
  Text Pattern Variation "Text Pattern Variation" Value in range 0 to 100
  Text Pattern Repeats "Text Pattern Repeats" Value in range 0 to 16
  Text Pattern Repeats Range "Text Pattern Repeats Range" Value in range 0 to 16
  Text Pattern Tune Start At Index "Text Pattern Tune Start At Index" Value in range 0 to 100 No
  Text Pattern Tune Length Override "Text Pattern Tune Length Override" Value in range 0 to 100 No
  Text Pattern Display "Text Pattern Display" Yes or No
Generator - Chording Depth "Chord Depth" Value in range 1, 32
  Pitch Offset "Chord Pitch Offset" Value in range -60, +60
  Delay "Chord Delay" Value in range 0, 32000
  Depth % "Chord Depth Percent" Value in range 0, 100
  Delay Unit "Chord Delay Unit" "Seconds (thousandths of a)", "Beats (60ths of a)", "Quantized Beats (60ths of a)"
  Velocity Factor "Chord Velocity Factor" Value in range -100, +100
  Delay Range "Chord Delay Range" Value in range 0, 32000
  Depth Range "Chord Depth Range" Value in range 0, 32
  Strategy "Chord Strategy" "Chordal Harmony", "Interval Within Scale Rule", "Semitone Shift"
  Shift/Interval "Chord Shift/Interval" Value in range -60, +60
  S/I Range "Chord Shift/Interval Range" Value in range -60, +60
Generator - Rules Harmony Rules "Harmony Rules" Rule name
  Next Note Rules "Next Note Rules" Rule name
  Rhythm Rules "Rhythm Rules" Rule name
  Scale Rules "Scale Rules" Rule name
  Harmonize? "Harmonize?" Yes or No
  Voice Root "Voice Root" "A", "A#", "Ab" etc.
Generator - Comments Copyright "Copyright" Copyright text
  Notes "Notes" Notes text
Generator - Articulation Minimum "Articulation Minimum" Value in range 0, 100
  Range "Articulation Range" Value in range 0, 100
  Change "Articulation Change" Value in range 0, 100
  Change Range "Articulation Change Range" Value in range 0, 100
Generator - Controllers Damper/Hold (64) "Damper/Hold (64)" Value in range -1, 127
  Harmonic Content (71) "Harmonic Content (71)" Value in range -1, 127
  Reverb (91) "Reverb (91)" Value in range -1, 127
  Chorus (93) "Chorus (93)" Value in range -1, 127
  Damper Release "Damper Release" Yes or No
  Portamento (84) "Portamento (65)" Value in range -1, 127
  MIDI Channel Sharing "MIDI Channel Reallocation" Yes or No
Generator - User Controller 1 MIDI CC "User Controller 1 Midi Command" Value in range 0 to 127
  Mode "User Controller 1 Mode" "-1 - Off", "0 - Random Drift", "1 - LFO (Min-Max-Min)", "2 - LFO (Max-Min-Max)", "3 - Sawtooth (Min-Max)", "4 - Sawtooth (Max-Min)"
  Minimum "User Controller 1 Minimum" Value in range 0, 127
  Range "User Controller 1 Range" Value in range 0, 127
  Change "User Controller 1 Change" Value in range 0, 127
  Change Range "User Controller 1 Change Range" Value in range 0, 127
  Update "User Controller 1 Update" Value in range 0, 10000
  Update Range "User Controller 1 Update Range" Value in range 0, 10000
  Update Units "User Controller 1 Update Unit" "Seconds (thousandths of a)", "Full seconds"
  Beat Cycle Length "User Controller 1 Beat Cycle Length" Value in range 0, 32000
  Phase Shift% "User Controller 1 Phase Shift" Value in range 0, 100
Generator - User Controller 2 MIDI CC "User Controller 2 Midi Command" Value in range 0 to 127
  Mode "User Controller 2 Mode" "-1 - Off", "0 - Random Drift", "1 - LFO (Min-Max-Min)", "2 - LFO (Max-Min-Max)", "3 - Sawtooth (Min-Max)", "4 - Sawtooth (Max-Min)"
  Minimum "User Controller 2 Minimum" Value in range 0, 127
  Range "User Controller 2 Range" Value in range 0, 127
  Change "User Controller 2 Change" Value in range 0, 127
  Change Range "User Controller 2 Change Range" Value in range 0, 127
  Update "User Controller 2 Update" Value in range 0, 10000
  Update Range "User Controller 2 Update Range" Value in range 0, 10000
  Beat Cycle Length "User Controller 2 Beat Cycle Length" Value in range 0, 32000
  Update Units "User Controller 2 Update Unit" "Seconds (thousandths of a)", "Full seconds"
  Phase Shift% "User Controller 2 Phase Shift" Value in range 0, 100
Generator - Micro Note Delay Delay Range "Micro Note Delay Range" Value in range 0, 1000
  Delay Change "Micro Note Delay Change" Value in range 0, 1000
  Delay Offset "Micro Note Delay Offset" Value in range -1000, +1000
Generator - Micro Pitch Bend Sensitivity "Pitch Bend Sensitivity" Value in range 0, 24
  Pitch Bend Offset "Pitch Bend Offset" Value in range -8192, +8191
  Pitch Range "Micro Pitch Range" Value in range 0, 8191
  Pitch Change "Micro Pitch Change" Value in range 0, 1000
  Pitch Update "Micro Pitch Update" Value in range 0, 10000
  Update Range "Micro Pitch Update Range" Value in range 0, 10000
Generator - Micro Vol Env Range "Micro Volume Range" Value in range 0, 127
  Change "Micro Volume Change" Value in range 0, 127
  Update "Micro Volume Update" Value in range 0, 1000
  Update Range "Micro Volume Update Range" Value in range 0, 10000
Generator - Note to MIDI CC Mapping CC for Note On? "MIDI CC instead of Note?" Yes or No
  Note On CC "MIDI CC Note On Value" Value from 0 to 127
  CC for Velocity? "MIDI CC for Note On Velocity?" Yes or No
  Velocity CC "MIDI CC Note On Velocity" Value from 0 to 127
  CC for Off? "MIDI CC for Note Off?" Yes or No
  Note Off CC "MIDI CC Note Off Value" Value from 0 to 127
Generator - User Envelope 1 (Volume) MIDI CC "User Envelope 1 MIDI CC" Value from 0 to 127
  Enabled? "User Envelope 1 Enabled" Yes or No
  Envelope "Volume" Envelope
Generator - User Envelope 2 (Pan) MIDI CC "User Envelope 2 MIDI CC" Value from 0 to 127
  Enabled? "User Envelope 2 Enabled" Yes or No
  Envelope "Pan (10)" Envelope
Generator - Envelope - Velocity Velocity "Velocity" Envelope
Generator - Envelope - Velocity Range Velocity Range "Velocity Range" Envelope
Generator - Envelope - Velocity Change Velocity Change "Velocity Change" Envelope
Generator - Envelope - Velocity Change Range Velocity Change Range "Velocity Change Range" Envelope

Object: "Scale Rule"

Parameter Group / View Displayed Name Script Parameter Name Notes
Scale Rule Value "Value"  

Object: "Harmony Rule"

Parameter Group / View Displayed Name Script Parameter Name Notes
Harmony Rule Value "Value"  

Object: "Rhythm Rule"

Parameter Group / View Displayed Name Script Parameter Name Notes
Rhythm Rule Value "Value"  

Object: "Next Note Rule"

Parameter Group / View Displayed Name Script Parameter Name Notes
Next Note Rule Value "Value"  

Object: "Cell"

Parameter Group / View Displayed Name Script Parameter Name Notes
Cell Generative Rules Scale Rules "Scale Rules"  
  Harmony Rules "Harmony Rules"  
  Next Note Rules "Next Note Rules"  
Cell Meter Meter "Meter" "1:4", "2:4", "3:4", "4:4", "5:4", "6:4", "7:4", "8:4", "1:8", "2:8", "3:8", "4:8", "5:8", "6:8", "7:8", "8:8", "9:8", "10:8", "11:8", "12:8"

Object: "Mix"

Parameter Group / View Displayed Name Script Parameter Name Notes
Mix Rules Scale Rules "Scale Rules"  
  Harmony Rules "Harmony Rules"  
  Next Note Rules "Next Note Rules"  
Mix Mix Root "Mix Root" "A", "A#", "Ab" etc.
  Tempo "Tempo" Value in range 1, 400

Synth Preset List

The following table all Synth Presets available to waeFxNetworkPresetSet in the current version of Wotja. The list was created using Wotja Script and the waeFxNetworkAllPresetNamesGet function.

sounds/Bass/Bass fat swept.tg
sounds/Bass/Bass filter sweep.tg
sounds/Bass/Bass pluck soft.tg
sounds/Bass/Bass plucked bright.tg
sounds/Bass/Bass pulser.tg
sounds/Beats/Beats ch10 eperc wt.tg
sounds/Beats/Beats ch10 imdrums wt.tg
sounds/Beats/Beats ch10 ogglegacy wt.tg
sounds/Bell/Bell bright.tg
sounds/Bell/Bell combo.tg
sounds/Bell/Bell glass felt.tg
sounds/Bell/Bell glass tri.tg
sounds/Bell/Bell synth bright.tg
sounds/Bell/Bell synth soft.tg
sounds/Drone/Drone aeolian spinner.tg
sounds/Drone/Drone airier.tg
sounds/Drone/Drone buzz chorus low.tg
sounds/Drone/Drone buzz chorus sweep.tg
sounds/Drone/Drone cosmic 1.tg
sounds/Drone/Drone cosmic 2.tg
sounds/Drone/Drone fizz 2.tg
sounds/Drone/Drone fizz.tg
sounds/Drone/Drone fm sweep variation.tg
sounds/Drone/Drone fuzz.tg
sounds/Drone/Drone gentle harmonic shifts.tg
sounds/Drone/Drone gentle shifts pan.tg
sounds/Drone/Drone index range.tg
sounds/Drone/Drone lpf ebb blurred.tg
sounds/Drone/Drone mild peril.tg
sounds/Drone/Drone motor.tg
sounds/Drone/Drone perpetual motion.tg
sounds/Drone/Drone piano orch wash.tg
sounds/Drone/Drone slow phase morph.tg
sounds/Drone/Drone slow phase pan.tg
sounds/Drone/Drone slow phase strings.tg
sounds/Drone/Drone soft chorus sweep.tg
sounds/Drone/Drone strings octave.tg
sounds/Drone/Drone strings.tg
sounds/Drone/Drone subtle offset pulse.tg
sounds/Drone/Drone subtle pulse.tg
sounds/Drone/Drone synth soft.tg
sounds/Drone/Drone voxaa.tg
sounds/Drone/Drone warm fizzer.tg
sounds/Drone/Drone wide chorus low.tg
sounds/Drone/Drone wide subtle additive.tg
sounds/Drone/Drone wind in wire.tg
sounds/E-piano/E-Piano 2.tg
sounds/E-piano/E-Piano blend 2.tg
sounds/E-piano/E-Piano blend.tg
sounds/E-piano/E-Piano bowed.tg
sounds/E-piano/E-Piano bright.tg
sounds/E-piano/E-Piano shimmer.tg
sounds/E-piano/E-Piano soft.tg
sounds/E-piano/E-Piano space.tg
sounds/E-piano/E-Piano.tg
sounds/Lead/Lead bob.tg
sounds/Lead/Lead dsynth soft warm.tg
sounds/MO1-Lead/Brassy.tg
sounds/MO1-Lead/Breathy chime.tg
sounds/MO1-Lead/Bright FM keys 1.tg
sounds/MO1-Lead/Chime bar 1.tg
sounds/MO1-Lead/Felt mallet chime.tg
sounds/MO1-Lead/Filter warble.tg
sounds/MO1-Lead/FM keys 1.tg
sounds/MO1-Lead/FM keys 2.tg
sounds/MO1-Lead/FM keys 3.tg
sounds/MO1-Lead/FM keys 4.tg
sounds/MO1-Lead/FM keys 5.tg
sounds/MO1-Lead/FM keys 6.tg
sounds/MO1-Lead/FM pluck.tg
sounds/MO1-Lead/Harmonic scan 1.tg
sounds/MO1-Lead/Inverse harmonic scan.tg
sounds/MO1-Lead/Mellow FM keys 1.tg
sounds/MO1-Lead/Perc hi-lo.tg
sounds/MO1-Lead/Pluck octaves.tg
sounds/MO1-Lead/Rattle plate.tg
sounds/MO1-Lead/Resonant filter sweep.tg
sounds/MO1-Lead/Ringing sine.tg
sounds/MO1-Lead/Slight vocal.tg
sounds/MO1-Lead/Soft bright lead.tg
sounds/MO1-Lead/Soft filter sweep.tg
sounds/MO1-Lead/Soft hi-lo.tg
sounds/MO1-Lead/Soft perc tine.tg
sounds/MO1-Lead/Soft pluck bright tail.tg
sounds/MO1-Lead/Staccato supersaws hard attack.tg
sounds/MO1-Lead/Staccato supersaws.tg
sounds/MO1-Lead/Supersaws hard attack.tg
sounds/MO1-Lead/Supersaws.tg
sounds/MO1-Lead/Tuned noise.tg
sounds/MO1-Lead/WTable scan 1.tg
sounds/MO1-Lead/WTable scan 2.tg
sounds/MO1-Lead/WTable scan 3.tg
sounds/MO1-Lead/WTable scan 4.tg
sounds/MO1-Lead/WTable scan 5.tg
sounds/MO1-Lead/WTable scan 6.tg
sounds/Multi/Multi 3 op fm template.tg
sounds/Multi/Multi piano strings.tg
sounds/Multi/Multi wavetable crossfade template.tg
sounds/Noise/Noise mains hum.tg
sounds/Noise/Noise on the beach.tg
sounds/Noise/Noise ring mod high bell.tg
sounds/Noise/Noise tuned breezes.tg
sounds/Pad/Pad bowed.tg
sounds/Pad/Pad brass metal shimmer.tg
sounds/Pad/Pad brass soft.tg
sounds/Pad/Pad brassy.tg
sounds/Pad/Pad coda mod.tg
sounds/Pad/Pad epiano.tg
sounds/Pad/Pad fizz grower.tg
sounds/Pad/Pad fizz.tg
sounds/Pad/Pad hummer.tg
sounds/Pad/Pad outer space.tg
sounds/Pad/Pad pipe shimmer.tg
sounds/Pad/Pad pitched metal.tg
sounds/Pad/Pad side trails vib.tg
sounds/Pad/Pad soft chev 2.tg
sounds/Pad/Pad soft easel.tg
sounds/Pad/Pad soft ep 1.tg
sounds/Pad/Pad soft ep 2.tg
sounds/Pad/Pad soft for chording.tg
sounds/Pad/Pad soft tremolo.tg
sounds/Pad/Pad space park 1.tg
sounds/Pad/Pad space park 2.tg
sounds/Pad/Pad space park 3.tg
sounds/Pad/Pad space scape.tg
sounds/Pad/Pad space shimmer.tg
sounds/Pad/Pad space wind.tg
sounds/Pad/Pad synth 1.tg
sounds/Pad/Pad synth 2.tg
sounds/Pad/Pad unresolved.tg
sounds/Pad/Pad warm chev 1.tg
sounds/Pad/Pad warm soft.tg
sounds/Perc/Perc beat sync noise.tg
sounds/Piano/Piano blend bright.tg
sounds/Piano/Piano blend upright.tg
sounds/Piano/Piano brass.tg
sounds/Piano/Piano damped bright.tg
sounds/Piano/Piano damped long 1.tg
sounds/Piano/Piano damped long 2.tg
sounds/Piano/Piano damped.tg
sounds/Piano/Piano upright long.tg
sounds/Piano/Piano upright wide.tg
sounds/Pluck/Pluck guitar bell bright.tg
sounds/Pluck/Pluck guitar blend edge.tg
sounds/Pluck/Pluck guitar blend ep.tg
sounds/Pluck/Pluck guitar blend osc.tg
sounds/Pluck/Pluck guitar blend soft.tg
sounds/Pluck/Pluck guitar blend steel.tg
sounds/Pluck/Pluck guitar bowed.tg
sounds/Strings/Strings build.tg
sounds/Strings/Strings distant.tg
sounds/Strings/Strings slow.tg
sounds/Strings/Strings tremolo.tg
sounds/Synth/Synth beat sync filter blip.tg
sounds/Synth/Synth dsynth warm 2.tg
sounds/Synth/Synth fizz pulse.tg
sounds/Synth/Synth fizz soft.tg
sounds/Synth/Synth organ electric.tg
sounds/Synth/Synth pwm.tg
sounds/Synth/Synth saw phase offset.tg
sounds/Synth/Synth slow vowel morph.tg
sounds/Synth/Synth soft lead.tg
sounds/Synth/Synth subtractive template 1.tg
sounds/Synth/Synth subtractive template.tg
sounds/Synth/Synth swept harmonics.tg
sounds/Synth/Synth wavetable simple vibrato.tg
sounds/Units/Unit dsynth.tg
sounds/Units/Unit osc.tg
sounds/Units/Unit particle.tg
sounds/Units/Unit wavetable.tg 

Effect Preset List

The following table all Effect Presets available to waeFxNetworkPresetSet in the current version of Wotja. The list was created using Wotja Script and the waeFxNetworkAllPresetNamesGet function.

 

fx/AllInOne/Combi chorus delay reverb 2.fxm
fx/AllInOne/Combi chorus delay reverb.fxm
fx/AllInOne/Combi chorus reverb.fxm
fx/AllInOne/Combi compressor chorus delay eq.fxm
fx/AllInOne/Combi compressor chorus delay reverb eq.fxm
fx/AllInOne/Combi delay chorus reverb.fxm
fx/AllInOne/Combi delay eq.fxm
fx/AllInOne/Combi delay reverb eq.fxm
fx/AllInOne/Combi eq chorus reverb.fxm
fx/AllInOne/Combi filter delay 2.fxm
fx/AllInOne/Combi filter delay reverb muted.fxm
fx/AllInOne/Combi filter delay shift.fxm
fx/AllInOne/Combi filter delay.fxm
fx/AllInOne/Combi filter eq reverb.fxm
fx/AllInOne/Combi filter shifter.fxm
fx/AllInOne/Combi lfo filter chorus reverb.fxm
fx/AllInOne/Combi lfo filter chorus.fxm
fx/AllInOne/Combi mix eq compressor reverb.fxm
fx/AllInOne/Combi reverb eq.fxm
fx/AllInOne/Combi reverb lfo filter.fxm
fx/Amp/- Amp default.fxm
fx/Amp/Amp quad.fxm
fx/Chorus/- Chorus default.fxm
fx/Chorus/Chorus deep.fxm
fx/Chorus/Chorus double.fxm
fx/Chorus/Chorus fast flange.fxm
fx/Chorus/Chorus feedback.fxm
fx/Chorus/Chorus light.fxm
fx/Chorus/Chorus medium.fxm
fx/Chorus/Chorus strong.fxm
fx/Compressor/- Compressor default.fxm
fx/Compressor/Compressor basic.fxm
fx/Compressor/Compressor low end boost.fxm
fx/Compressor/Compressor mild.fxm
fx/Compressor/Compressor smooth.fxm
fx/Compressor/Compressor tight.fxm
fx/Delay/- Delay default.fxm
fx/Delay/Delay bounce.fxm
fx/Delay/Delay double sync.fxm
fx/Delay/Delay doubling.fxm
fx/Delay/Delay echoer.fxm fx/Delay/Delay filtered mono.fxm
fx/Delay/Delay filtered sync pan.fxm
fx/Delay/Delay long.fxm
fx/Delay/Delay resonator.fxm
fx/Delay/Delay simple.fxm
fx/Delay/Delay slapback.fxm
fx/Delay/Delay tight slapback.fxm
fx/Distortion/- Distortion default.fxm
fx/Distortion/Distortion bren filter.fxm
fx/Distortion/Distortion fuzz drive.fxm
fx/Distortion/Distortion fuzz.fxm
fx/Distortion/Distortion mild.fxm
fx/EQ/- Equaliser default.fxm
fx/EQ/Equaliser hi cut.fxm
fx/EQ/Equaliser lo cut.fxm
fx/EQ/Equaliser mid.fxm
fx/Filter/- Filter default.fxm
fx/Filter/Filter 2Hz autowah.fxm
fx/Filter/FIlter 4Hz auto wah.fxm
fx/Filter/Filter 4Hz autowah.fxm
fx/Filter/Filter dirty.fxm
fx/Filter/Filter hi cut.fxm
fx/Filter/Filter high fast sweep.fxm
fx/Filter/Filter parallel bandpass 2 bar sweep.fxm
fx/Filter/Filter slow auto wah.fxm
fx/Filter/Filter slow sweep hi q.fxm
fx/Filter/Filter subtle sweep.fxm
fx/Filter/Filter telephone.fxm
fx/Overdrive/- Overdrive default.fxm
fx/Overdrive/Overdrive extreme.fxm
fx/Overdrive/Overdrive harmonics.fxm
fx/Overdrive/Overdrive hot.fxm
fx/Overdrive/Overdrive serious.fxm
fx/Overdrive/Overdrive warm.fxm
fx/Pan/Pan auto.fxm
fx/Pan/Pan shimmer.fxm
fx/Reverb/- Reverb default.fxm
fx/Reverb/Reverb 5 second.fxm
fx/Reverb/Reverb 9 second.fxm
fx/Reverb/Reverb basement.fxm
fx/Reverb/Reverb bright hall.fxm
fx/Reverb/Reverb bright plate.fxm
fx/Reverb/Reverb bright small room.fxm
fx/Reverb/Reverb drum hallway.fxm
fx/Reverb/Reverb drum studio.fxm
fx/Reverb/Reverb light ambience.fxm
fx/Reverb/Reverb medium room.fxm
fx/Reverb/Reverb resonant metallic.fxm
fx/Reverb/Reverb ringing 6 second.fxm
fx/Reverb/Reverb slapback room.fxm
fx/Reverb/Reverb smooth 10 second.fxm
fx/Volume/Volume 10 second duck.fxm
fx/Volume/Volume 4hz gate pan.fxm
fx/Volume/Volume 4hz gate.fxm
fx/Volume/Volume swell.fxm
fx/Volume/Volume tremolo fast.fxm
fx/Volume/Volume tremolo mono 2xbpm sync.fxm
fx/Volume/Volume tremolo pan.fxm
fx/Volume/Volume tremolo slow.fxm
fx/Volume/Volume tremolo stereo 2xbpm sync.fxm

See Also

Script Function Reference

Wotja Script Utility functions

Wotja Script Utility functions all start with the wjs prefix

wjsLog ()

The function wjsLog may be used to display text in the Script Console; this is very useful for debugging your scripts!

Example:


function onWmeStart() {
  wjsLog("Hello World!")
}

wjsGetRandom ()

This function returns a random integer.

The function has no parameters.

Example:

var value = wjsGetRandom ()

wjsRandomGetFromTo (minimum, maximum)

This function returns a random integer in the range of the two supplied values.

The function has two parameters:

  • minimum   the minimum value that can be returned
  • maximum   the maximum value that can be returned

Example:


function onWmeStart() {
  // Get a random integer between 0 and 50 inclusive.
  var value = wjsRandomGetFromTo (0, 50)
  wjsLog("random value=", value)
}
          

Mix related functions

These functions are intended to be use from Mix Scripts. Mix related functions all start with the mix prefix.


mixCellObjectCountGet (columnIndex, trackIndex, objectType)

Returns the number of objects of the specified type, in the current Wotja Mix.

The function has the following parameters:

  • columnIndex   the column index of interest; from 0 to 3; 0 is the first cell on the left, 3 is the last cell on the right
  • trackIndex   the track index of interest; from 0 to 11; 0 is the first track at the top of the mix, 11 is the last track in the mix
  • objectType   the type of the object of interest, i.e. one of "Scale Rule", "Harmony Rule", "Rhythm Rule", "Next Note Rule".

Example:


function testFunction() {
  var columnIndex = 0
  var trackIndex = 0
  // Example usage:
  var scaleRuleCount = mixCellObjectCountGet(columnIndex, trackIndex, "Scale Rule")
  print("Mix cell(" + columnIndex + "," + trackIndex + ") : scale rule count = " + scaleRuleCount)
}
          

mixCellObjectIndexGet (columnIndex, trackIndex, objectType, objectIndex)

Returns the index of the named object, which will be greater than or equal to 0 if the named object is found; the function will return -1 if not found.

The function has the following parameters:

  • columnIndex   the column index of interest; from 0 to 3; 0 is the first cell on the left, 3 is the last cell on the right
  • trackIndex   the track index of interest; from 0 to 11; 0 is the first track at the top of the mix, 11 is the last track in the mix
  • objectType   the type of the object of interest, i.e. one of "Scale Rule", "Harmony Rule", "Rhythm Rule", "Next Note Rule".
  • objectName   the name of the object of interest

Example:


function testFunction() {
  var columnIndex = 0
  var trackIndex = 0
  // Example usage:
  var scaleRuleCount = mixCellObjectCountGet(columnIndex, trackIndex, "Scale Rule")
  print("Mix cell(" + columnIndex + "," + trackIndex + ") : scale rule count = " + scaleRuleCount)
  var scaleRuleName = mixCellObjectNameGet(columnIndex, trackIndex, "Scale Rule", 0)
  print("Mix cell(" + columnIndex + "," + trackIndex + ") : scale rule 0 has name = " + scaleRuleName)
  var indexOfScaleRuleName = mixCellObjectIndexGet(columnIndex, trackIndex, "Scale Rule", scaleRuleName)
  print("Mix cell(" + columnIndex + "," + trackIndex + ") : scale rule with name=" + scaleRuleName + " is at index=" + indexOfScaleRuleName)

}
          

mixCellObjectNameGet (columnIndex, trackIndex, objectType, objectIndex)

Returns the name of the specified object.

The function has the following parameters:

  • columnIndex   the column index of interest; from 0 to 3; 0 is the first cell on the left, 3 is the last cell on the right
  • trackIndex   the track index of interest; from 0 to 11; 0 is the first track at the top of the mix, 11 is the last track in the mix
  • objectType   the type of the object of interest, i.e. one of "Scale Rule", "Harmony Rule", "Rhythm Rule", "Next Note Rule".
  • objectIndex   the index of the object of interest, starting at 0 for the first object.

Example:


function testFunction() {
  var columnIndex = 0
  var trackIndex = 0
  // Example usage:
  var scaleRuleCount = mixCellObjectCountGet(columnIndex, trackIndex, "Scale Rule")
  print("Mix cell(" + columnIndex + "," + trackIndex + ") : scale rule count = " + scaleRuleCount)
  var scaleRuleName = mixCellObjectNameGet(columnIndex, trackIndex, "Scale Rule", 0)
  print("Mix cell(" + columnIndex + "," + trackIndex + ") : scale rule 0 has name = " + scaleRuleName)
}
          

mixCellObjectParameterGet (columnIndex, trackIndex, objectType, objectIndex, parameterName)

Returns the value of the parameter, for the specified object index of the specified object type, in the playing mix.

The function has the following parameters:

  • columnIndex   the column index of interest; from 0 to 3; 0 is the first cell on the left, 3 is the last cell on the right
  • trackIndex   the track index of interest; from 0 to 11; 0 is the first track at the top of the mix, 11 is the last track in the mix
  • objectType   the type of the object of interest, i.e. one of "Scale Rule", "Harmony Rule", "Rhythm Rule", "Next Note Rule".
  • objectIndex   the index of the object of interest, starting at 0 for the first object. If the objectType is "Cell", or "Mix", you do not provide this parameter.
  • parameterName   the parameter of interest.

Example:


function testFunction() {
  // Example usage:
  var columnIndex = 0
  var trackIndex = 0
  var generatorIndex = 0
  var generatorValue = mixCellObjectParameterGet(columnIndex, trackIndex, "Generator", generatorIndex, "Scale Rules")
  print("generatorValue = " + generatorValue)
  mixCellObjectParameterSet(columnIndex, trackIndex, "Generator", generatorIndex, "Scale Rules", "Mix\nDefault")
  generatorValue = mixCellObjectParameterGet(columnIndex, trackIndex, "Generator", generatorIndex, "Scale Rules")
  print("generatorValue = " + generatorValue)
  var cellValue = mixCellObjectParameterGet(columnIndex, trackIndex, "Cell", "Scale Rules")
  print("cellValue = " + cellValue)
}
          

mixCellObjectParameterSet (columnIndex, trackIndex, objectType, objectIndex, parameterName, newValue)

Sets the parameter to the the supplied value, for the specified object index of the specified object type, in the playing mix.

The function has the following parameters:

  • columnIndex   the column index of interest; from 0 to 3; 0 is the first cell on the left, 3 is the last cell on the right
  • trackIndex   the track index of interest; from 0 to 11; 0 is the first track at the top of the mix, 11 is the last track in the mix
  • objectType   the type of the object of interest, i.e. one of "Scale Rule", "Harmony Rule", "Rhythm Rule", "Next Note Rule".
  • objectIndex   the index of the object of interest, starting at 0 for the first object. If the objectType is "Cell", or "Mix", you do not provide this parameter.
  • parameterName   the parameter of interest.
  • newValue   the new parameter value to use.

    Special behavior for Rules: if you set newValue to be the name a built-in rule (e.g. Scale Rule "All Scale Major") for the parameter value, the parameter value will be set magically to that of the corresponding rule type. Otherwise, you'd need to set the rule value in the normal way, with a string looking something like "1 0 1 0 1 1 0 1 0 1 0 1"

Example:


function testFunction() {
  // Example usage:
  var columnIndex = 0
  var trackIndex = 0
  var generatorIndex = 0
  var generatorValue = mixCellObjectParameterGet(columnIndex, trackIndex, "Generator", generatorIndex, "Scale Rules")
  print("generatorValue = " + generatorValue)
  mixCellObjectParameterSet(columnIndex, trackIndex, "Generator", generatorIndex, "Scale Rules", "Mix\nDefault")
  generatorValue = mixCellObjectParameterGet(columnIndex, trackIndex, "Generator", generatorIndex, "Scale Rules")
  print("generatorValue = " + generatorValue)
  var cellValue = mixCellObjectParameterGet(columnIndex, trackIndex, "Cell", "Scale Rules")
  print("cellValue = " + cellValue)
  mixCellObjectParameterSet(columnIndex, trackIndex, "Cell", "Scale Rules", "Mix\nDefault")
  cellValue = mixCellObjectParameterGet(columnIndex, trackIndex, "Cell", "Scale Rules")
  print("cellValue = " + cellValue)
}
          

mixColumnLockGet ()

Returns the currently locked column index: if no column is currently locked, this returns -1 otherwise, returns a value from 0 to 3

The function has no parameters

Example:


function testFunction() {
  var columnLockedIndex = mixColumnLockGet()
  print ("columnLockedIndex = " + columnLockedIndex)
}
        

mixColumnLockSet (columnIndex)

Sets column lock (or not); if columnIndex is 0 to 3, this sets the column lock on; if columnIndex is -1, this turns the column lock off

The function has the following parameters:

  • columnIndex   The columnIndex index of the cell (from 0 to 3).

Example:


function testFunction() {
  // Example usages:
  var columnLockedIndex = mixColumnLockGet()
  print ("columnLockedIndex = " + columnLockedIndex)

  mixColumnLockSet(0)
  columnLockedIndex = mixColumnLockGet()
  print ("columnLockedIndex = " + columnLockedIndex)

  mixColumnLockSet(1)
  columnLockedIndex = mixColumnLockGet()
  print ("columnLockedIndex = " + columnLockedIndex)

  mixColumnLockSet(2)
  columnLockedIndex = mixColumnLockGet()
  print ("columnLockedIndex = " + columnLockedIndex)

  mixColumnLockSet(3)
  columnLockedIndex = mixColumnLockGet()
  print ("columnLockedIndex = " + columnLockedIndex)

  mixColumnLockSet(-1)
  columnLockedIndex = mixColumnLockGet()
  print ("columnLockedIndex = " + columnLockedIndex)
}
        

mixObjectCountGet (objectType)

Returns the number of objects of the specified type, in the current Wotja Mix.

The function has the following parameters:

  • objectType   the type of the object of interest, i.e. one of "Scale Rule", "Harmony Rule", "Rhythm Rule", "Next Note Rule".

Example:


function testFunction() {
  // Example usage:
  var scaleRuleCount = mixObjectCountGet("Scale Rule")
  print("Mix scale rule count = " + scaleRuleCount)
}
          

mixObjectIndexGet (objectType, objectIndex)

Returns the index of the named object, which will be greater than or equal to 0 if the named object is found; the function will return -1 if not found.

The function has the following parameters:

  • objectType   the type of the object of interest, i.e. one of "Scale Rule", "Harmony Rule", "Rhythm Rule", "Next Note Rule".
  • objectName   the name of the object of interest

Example:


function testFunction() {
  // Example usage:
  var scaleRuleName = mixObjectNameGet("Scale Rule", 0)
  print("Mix scale rule 0 has name = " + scaleRuleName)
  var indexOfScaleRuleName = mixObjectIndexGet("Scale Rule", scaleRuleName)
  print("Mix scale rule with name=" + scaleRuleName + " is at index=" + indexOfScaleRuleName)
}
          

mixObjectNameGet (objectType, objectIndex)

Returns the name of the specified object.

The function has the following parameters:

  • objectType   the type of the object of interest, i.e. one of "Scale Rule", "Harmony Rule", "Rhythm Rule", "Next Note Rule".
  • objectIndex   the index of the object of interest, starting at 0 for the first object.

Example:


function testFunction() {
  // Example usage:
  var scaleRuleCount = mixObjectCountGet("Scale Rule")
  print("Mix scale rule count = " + scaleRuleCount)
  var scaleRuleName = mixObjectNameGet("Scale Rule", 0)
  print("Mix scale rule 0 has name = " + scaleRuleName)
  var indexOfScaleRuleName = mixObjectIndexGet("Scale Rule", scaleRuleName)
  print("Mix scale rule with name=" + scaleRuleName + " is at index=" + indexOfScaleRuleName)
}
          

mixObjectParameterGet (objectType, objectIndex, parameterName)

Returns the value of the parameter, for the specified object index of the specified object type, in the playing mix.

The function has the following parameters:

  • objectType   the type of the object of interest, i.e. one of "Scale Rule", "Harmony Rule", "Rhythm Rule", "Next Note Rule".
  • objectIndex   the index of the object of interest, starting at 0 for the first object. If the objectType is "Cell", or "Mix", you do not provide this parameter.
  • parameterName   the parameter of interest.

Example:


function testFunction() {
  // Example usage:
  var scaleRuleValue = mixObjectParameterGet("Scale Rule", 0, "Value")
  print("Mix scale rule index 0, value was = " + scaleRuleValue)
  scaleRuleValue = mixObjectParameterSet("Scale Rule", 0, "Value", "1.0000 0.4961 0.0000 0.4961 0.0000 0.4961 0.0000 1.0000 0.4961 0.0000 0.4961 0.0000")
  scaleRuleValue = mixObjectParameterGet("Scale Rule", 0, "Value")
  print("Mix scale rule index 0, value now = " + scaleRuleValue)
}
          

mixObjectParameterSet (objectType, objectIndex, parameterName, newValue)

Sets the parameter to the the supplied value, for the specified object index of the specified object type, in the playing mix.

The function has the following parameters:

  • objectType   the type of the object of interest, i.e. one of "Scale Rule", "Harmony Rule", "Rhythm Rule", "Next Note Rule".
  • objectIndex   the index of the object of interest, starting at 0 for the first object. If the objectType is "Cell", or "Mix", you do not provide this parameter.
  • parameterName   the parameter of interest.
  • newValue   the new parameter value to use.

    Special behavior for Rules: if you set newValue to be the name a built-in rule (e.g. "Major") for the parameter value, the parameter value will be set magically to that of the corresponding rule type. Otherwise, you'd need to set the rule value in the normal way, with a string looking something like "1 0 0.5 0 1 0.5 0 1 0 0.5 0 0.5"

Example:


function testFunction() {
  // Example usage:
  var scaleRuleValue = mixObjectParameterGet("Scale Rule", 0, "Value")
  print("Mix scale rule index 0, value was = " + scaleRuleValue)
  scaleRuleValue = mixObjectParameterSet("Scale Rule", 0, "Value", "1.0000 0.4961 0.0000 0.4961 0.0000 0.4961 0.0000 1.0000 0.4961 0.0000 0.4961 0.0000")
  scaleRuleValue = mixObjectParameterGet("Scale Rule", 0, "Value")
  print("Mix scale rule index 0, value now = " + scaleRuleValue)
}
          

mixParameterSet (parameterName, newValue)

This function is used to set the mix's parameter to the supplied value, for the object within whose trigger script you place this call.

The function has two parameters:

  • parameterName   the name of the parameter for which you want to set the value.
  • newValue   the new parameter value to use.

    Special behavior for Rules: if you set newValue to be the name a built-in rule for the parameter value (e.g. Scale Rule "All Scale Major"), the parameter value will be set magically to that of the corresponding rule type. Otherwise, you'd need to set the rule value in the normal way, with a string looking something like "1 0 1 0 1 1 0 1 0 1 0 1"

Example:


function testFunction() {
  // Example usage:
  var mixValue = mixParameterGet("Scale Rules")
  print("Mix: Scale Rules = " + mixValue)
  mixParameterSet("Scale Rules", "Default")
  mixValue = mixParameterGet("Scale Rules")
  print("Mix: Scale Rules = " + mixValue)

  mixValue = mixParameterGet("Mix Root")
  print("Mix: Mix Root = " + mixValue)
  mixParameterSet("Mix Root", "C")
  mixValue = mixParameterGet("Mix Root")
  print("Mix: Mix Root = " + mixValue)

  mixValue = mixParameterGet("Tempo")
  print("Mix: Tempo = " + mixValue)
  mixParameterSet("Tempo", "100")
  mixValue = mixParameterGet("Tempo")
  print("Mix: Tempo = " + mixValue)
}
          

mixParameterGet (parameterName)

This function returns the value of the named parameter, for the object within whose trigger script you place this call. Note that the value returned is always a string, which you can convert to a number using tonumber().

The function has one parameter:

  • parameterName   the name of the parameter for which you want to determine the current value.

Example:


function testFunction() {
  // Example usage:
  var mixValue = mixParameterGet("Scale Rules")
  print("Mix: Scale Rules = " + mixValue)

  mixValue = mixParameterGet("Mix Root")
  print("Mix: Mix Root = " + mixValue)

  mixValue = mixParameterGet("Tempo")
  print("Mix: Tempo = " + mixValue)
}
          

mixTrackCellLoopGet (trackIndex)

Returns a value which is the column currently locked for that track; from 0 to 3; or -1 if no cell is looping

The function has the following parameters:

  • trackIndex   the track index of interest; from 0 to 11; 0 is the first track at the top of the mix, 11 is the last track in the mix

Example:


function testFunction() {
  var trackIndex = 0
  var loopingCellColumnIndex = mixTrackCellLoopGet(trackIndex)
  print("loopingCellColumnIndex = " + loopingCellColumnIndex)
}
          

mixTrackCellLoopSet (trackIndex, columnIndex)

sets cell to loop (or not); if columnIndex is 0 to 3, this starts the track looping at that column index; if columnIndex is -1, this stops the track looping; what happens next, depends on the track rule.

The function has the following parameters:

  • trackIndex   the track index of interest; from 0 to 11; 0 is the first track at the top of the mix, 11 is the last track in the mix
  • columnIndex   The columnIndex index of the cell (from 0 to 3).

Example:


function testFunction() {
  var trackIndex = 0
  var loopingCellColumnIndex = mixTrackCellLoopGet(trackIndex)
  print("loopingCellColumnIndex = " + loopingCellColumnIndex)

  mixTrackCellLoopSet(trackIndex, -1)
  loopingCellColumnIndex = mixTrackCellLoopGet(trackIndex)
  print("loopingCellColumnIndex = " + loopingCellColumnIndex)
}
          

mixTrackPanGet (trackIndex)

Returns pan value from 0 to 127; 0 is far left, 64 is middle, 127 is far right

The function has the following parameters:

  • trackIndex   the track index of interest; from 0 to 11; 0 is the first track at the top of the mix, 11 is the last track in the mix

Example:


function testFunction() {
  // Example usage:
  var trackIndex = 0
  var value = mixTrackPanGet(trackIndex) // Value from 0 to 127, 0 is far left, 64 is middle, 127 is far right
  print("Track pan = " + value)
}
          

mixTrackPanSet (trackIndex, panValue)

Sets the pan setting for the specified track.

The function has the following parameters:

  • trackIndex   the track index of interest; from 0 to 11; 0 is the first track at the top of the mix, 11 is the last track in the mix
  • panValue   The pan value to use, from 0 to 127; 0 is far left, 64 is middle, 127 is far right

Example:


function testFunction() {
  // Example usage:
  var trackIndex = 0
  var value = mixTrackPanGet(trackIndex) // Value from 0 to 127, 0 is far left, 64 is middle, 127 is far right
  print("Track pan = " + value)
  mixTrackPanSet(trackIndex, 64) // Set to middle!
  value = mixTrackPanGet(trackIndex)
  print("Track pan = " + value)
}
          

mixTrackRuleGet (trackIndex)

Returns a string value which is current track rule setting, one of: "Sequence", "Loop" or "One Shot"

The function has the following parameters:

  • trackIndex   the track index of interest; from 0 to 11; 0 is the first track at the top of the mix, 11 is the last track in the mix

Example:


function testFunction() {

  var trackIndex = 0

  var trackRule = mixTrackRuleGet(trackIndex)
  print("trackRule = " + trackRule)
}
          

mixTrackRuleSet (trackIndex, ruleValue)

Sets the pan setting for the specified track.

The function has the following parameters:

  • trackIndex   the track index of interest; from 0 to 11; 0 is the first track at the top of the mix, 11 is the last track in the mix
  • ruleValue   one of: "Sequence", "Loop" or "One Shot"

Example:


function testFunction() {

  var trackIndex = 0

  var trackRule = mixTrackRuleGet(trackIndex)
  print("trackRule = " + trackRule)

  mixTrackRuleSet(trackIndex, "One Shot")
  trackRule = mixTrackRuleGet(trackIndex)
  print("trackRule = " + trackRule)

  mixTrackRuleSet(trackIndex, "Loop")
  trackRule = mixTrackRuleGet(trackIndex)
  print("trackRule = " + trackRule)

  mixTrackRuleSet(trackIndex, "Sequence")
  trackRule = mixTrackRuleGet(trackIndex)
  print("trackRule = " + trackRule))
}
          

mixTrackVolumeGet (trackIndex)

Returns volume value from 0 to 127

The function has the following parameters:

  • trackIndex   the track index of interest; from 0 to 11; 0 is the first track at the top of the mix, 11 is the last track in the mix

Example:


function testFunction() {
  // Example usage:
  var trackIndex = 0
  var value = mixTrackVolumeGet(trackIndex)
  print("Track volume = " + value)
}
          

mixTrackVolumSet (trackIndex, volumeValue)

Sets the volume setting for the specified track.

The function has the following parameters:

  • trackIndex   the track index of interest; from 0 to 11; 0 is the first track at the top of the mix, 11 is the last track in the mix
  • volumeValue   The volume value to use, from 0 to 127

Example:


function testFunction() {
  // Example usage:
  var trackIndex = 0
  var value = mixTrackVolumeGet(trackIndex)
  print("Track volume = " + value)
  mixTrackVolumeSet(trackIndex, 127) // Set to max!
  value = mixTrackVolumeGet(trackIndex)
  print("Track volume = " + value)
}
          

mixVolumeGet (trackIndex)

Returns the mix master volume value from 0 to 127

The function has no parameters

Example:


function testFunction() {
  // Example usage:
  var trackIndex = 0
  var value = mixVolumeGet(trackIndex)
  print("mix volume = " + value)
}
          

mixVolumSet (trackIndex, volumeValue)

Sets the the mix master volume setting

The function has the following parameters:

  • volumeValue   The volume value to use, from 0 to 127

Example:


function testFunction() {
  // Example usage:
  var trackIndex = 0
  var value = mixVolumeGet(trackIndex)
  print(" volume = " + value)
  mixVolumeSet(trackIndex, 127) // Set to max!
  value = mixVolumeGet(trackIndex)
  print("mix volume = " + value)
}
          

WME related functions

The WME contains many powerful scripting features. The WME related functions all start with the wme prefix.


wmeParameterSet (parameterName, newValue)

This function is used to set the object's parameter to the supplied value, for the object within whose trigger script you place this call.

The function has two parameters:

  • parameterName   the name of the parameter for which you want to set the value.
  • newValue   the new parameter value to use.

    Special behavior for Rules: if you set newValue to be the name a built-in rule (e.g. "Major") for the parameter value, the parameter value will be set magically to that of the corresponding rule type. Otherwise, you'd need to set the rule value in the normal way, with a string looking something like "1 0 0.5 0 1 0.5 0 1 0 0.5 0 0.5"

Example:


function onWmeStart() {
  // Set the Chord Depth to 4 (assuming we make this call from within a
  // Generator's trigger script!)
  var chordDepth = 4
  wmeParameterSet("Chord Depth", chordDepth)
}
          

wmeParameterGet (parameterName)

This function returns the value of the named parameter, for the object within whose trigger script you place this call. Note that the value returned is always a string, which you can convert to a number using tonumber().

The function has one parameter:

  • parameterName   the name of the parameter for which you want to determine the current value.

Example:


function onWmeStart() {
  // Get the current Chord Depth (assuming we make this call from within a
  // Generator's trigger script!)
  var chordDepth = wmeParameterGet("Chord Depth")
  wjsLog ("Chord Depth=" + chordDepth)
}
          

wmeGeneratorMIDIChannelGet()

This function returns the MIDI channel (assuming the script is called from within a generator script!). The value returned is a value from 0 to 15 (MIDI channel is actually displayed in the WME Network screen as 1 to 16).

The function has no parameters.

Example:


function onWmeStart() {
  var channel = wmeGeneratorMIDIChannelGet ()
  wjsLog ("Channel=" + channel)
}
          

wmeRuleElementGet (ruleObjectType, ruleObjectIndex, ruleElementIndex)

This function returns the rule element value of the specified index, for the indexed rule object. The value returned is a value between 0 and 127.

The function has the following parameters:

  • ruleObjectType   the object type i.e. one of "Scale Rule", "Harmony Rule", "Rhythm Rule", "Next Note Rule".
  • ruleObjectIndex   the index of the rule object of interest, starting at 0 for the first object.
  • ruleElementIndex   the index of the element; starting at 0 for the initial element.

Example 1:


function onWmeStart() {
  // Dump out the scale rule element values, for the first scale.
  var scaleRuleIndex = 0
  var itemIndex = 0
  while (itemIndex < 12)
  {
    var value = wmeRuleElementGet ("Scale Rule", scaleRuleIndex, itemIndex)
    wjsLog ("value=" + value)
    index = itemIndex + 1
  }
}
          

Example 2:


function onWmeStart() {
  var scaleRuleCount = wmeObjectCountGet("Scale Rule")
  wjsLog ("Scale Rule objects=" + scaleRuleCount)
  
  for (var scaleRuleIndex = 0; scaleRuleIndex < scaleRuleCount; scaleRuleIndex++) {
    // Dump out the scale rule element values, for the scale!
    var ruleName = wmeObjectNameGet("Scale Rule", scaleRuleIndex)
    wjsLog ("Scale=" + ruleName)
    
    var itemIndex = 0
    while (itemIndex < 12)
    {
      var value = wmeRuleElementGet ("Scale Rule", scaleRuleIndex, itemIndex)
      wjsLog ("wtemIndex" + ", " +  itemIndex + ", " +  "value" + ", " +  value)
      itemIndex = itemIndex + 1
    }
  }
}
          

wmeMIDISendCC (channel, cc, value [, delay])

This function emits the specified MIDI CC event.

The function has the following parameters:

  • channel   the MIDI channel to use; from 1 to 16.
  • cc   the MIDI CC to use; from 0 to 127.
  • value   the controller value to use, from 0 to 127.
  • delay   an optional delay to use, from 0 up, defaulting to 0; in WME pattern time units (where 60 represents one crotchet or quarter note). The delay is relative to the current WME timebase relevant to the trigger script in question.

Example:


function onWmeBar(bar) {
  // Generator trigger...
  // Apply a pan sweep through the bar from left to right,
  // to show-off the use of wmeMIDISendCC.

  var duration = wmeBarDurationGet()

  var midiChannel = wmeGeneratorMIDIChannelGet()
  var delay = 0
  var ccController = 10 // Pan controller!
  var value = 0
  while delay <= duration {
    var value = (127 * delay) / duration
    // Note that the "delay" is optional; we use this in this specific
    // demo, to get a sweep effect from start to end of the bar.
    wmeMIDISendCC(midiChannel, ccController, value, delay)
    delay = delay + 20
 }
}
          

wmeBarDurationGet ()

This function returns the duration of the mix bar, in WME pattern time units; where 240 represents four crotchets or one whole note or a bar of 4:4 time.

The function has no parameters.

Example:


function onWmeStart() {
  var duration = wmeBarDurationGet()
  wjsLog ("duration=" + duration)
}
          

wmeObjectCountGet (objectType)

Returns the number of objects of the specified type, in the current Wotja Mix.

The function has the following parameters:

  • objectType   the type of the object of interest, i.e. one of "Generator", "Scale Rule", "Harmony Rule", "Rhythm Rule", "Next Note Rule"

Example:


function onWmeStart() {
  var generatorCount = wmeObjectCountGet("Generator")
  wjsLog ("Generator objects=" + generatorCount)
}
          

wmeObjectIndexGet (objectType, objectIndex)

Returns the index of the named object, which will be greater than or equal to 0 if the named object is found; the function will return -1 if not found.

The function has the following parameters:

  • objectType   the type of the object of interest, i.e. one of "Generator", "Scale Rule", "Harmony Rule", "Rhythm Rule", "Next Note Rule".
  • objectName   the name of the object of interest

Example:


function onWmeStart() {
  var majorScaleRuleIndex = wmeObjectIndexGet("Scale Rule", "Major")
  wjsLog ("majorScaleRuleIndex=" + majorScaleRuleIndex)
}
          

wmeObjectNameGet (objectType, objectIndex)

Returns the name of the specified object.

The function has the following parameters:

  • objectType   the type of the object of interest, i.e. one of "Generator", "Scale Rule", "Harmony Rule", "Rhythm Rule", "Next Note Rule".
  • objectIndex   the index of the object of interest, starting at 0 for the first object.

Example:


function onWmeStart() {
  var generatorCount = wmeObjectCountGet("Generator")
  wjsLog ("Generator objects=" + generatorCount)

  for (var index = 0; index < generatorCount; index++) {
    wjsLog ("Generator name=" + wmeObjectNameGet("Generator", index))
  }
}
          

wmeObjectParameterGet (objectType, objectIndex, parameterName)

Returns the value of the parameter, for the specified object index of the specified object type, in the playing mix.

The function has the following parameters:

  • objectType   the type object of interest, i.e. one of "Mix", "Cell", "Generator", "Scale Rule", "Harmony Rule", "Rhythm Rule", "Next Note Rule".
  • objectIndex   the index of the object of interest, starting at 0 for the first object. If the objectType is "Cell", or "Mix", you do not provide this parameter.
  • parameterName   the parameter of interest.

Example:


function onWmeStart() {

  var valueWas =  wmeObjectParameterGet("Generator", 0, "Chord Depth")

  wmeObjectParameterSet("Generator", 0, "Chord Depth", 4)

  var valueNow =  wmeObjectParameterGet("Generator", 0, "Chord Depth")

  wjsLog("Chord Depth valueWas=" + valueWas + ", valueNow = " + valueNow)
}
          

wmeObjectParameterSet (objectType, objectIndex, parameterName, newValue)

Sets the parameter to the the supplied value, for the specified object index of the specified object type, in the playing mix.

The function has the following parameters:

  • objectType   the type object of interest, i.e. one of "Mix", "Cell", "Generator", "Scale Rule", "Harmony Rule", "Rhythm Rule", "Next Note Rule"
  • objectIndex   the index of the object of interest, starting at 0 for the first object. If the objectType is "Cell", or "Mix", you do not provide this parameter.
  • parameterName   the parameter of interest.
  • newValue   the new parameter value to use.

    Special behavior for Rules: if you set newValue to be the name a built-in rule (e.g. "Major") for the parameter value, the parameter value will be set magically to that of the corresponding rule type. Otherwise, you'd need to set the rule value in the normal way, with a string looking something like "1 0 0.5 0 1 0.5 0 1 0 0.5 0 0.5"

Example:


function onWmeStart() {

  var valueWas =  wmeObjectParameterGet("Generator", 0, "Chord Depth")

  wmeObjectParameterSet("Generator", 0, "Chord Depth", 4)

  var valueNow =  wmeObjectParameterGet("Generator", 0, "Chord Depth")

  wjsLog("Chord Depth valueWas=" + valueWas + ", valueNow = " + valueNow)
}
          

wmeCellElapsedPercentGet ()

Returns the elapsed percentage of the playing mix, within the context of it's container cell. A cell with duration set to "Infinite" is actually around 8 hours before it restarts; so will tend to report 0 percent. A cell with duration of just a few bars, will progress quickly from 0 through to 100.

The function has no parameters.

Example:


function onWmeBar() {
  var value = wmeCellElapsedPercentGet()
  wjsLog ("wmeCellElapsedPercentGet=" + value)
}
            

wmeRuleElementSet (ruleObjectType, ruleObjectIndex, ruleElementIndex, newValue)

This function set the rule element value of the specified index, for the indexed rule object, to the specified value. The value must be between 0 and 127.

The function has the following parameters:

  • ruleObjectType   the object type i.e. one of "Scale Rule", "Harmony Rule", "Rhythm Rule", "Next Note Rule".
  • ruleObjectIndex   the index of the rule object of interest, starting at 0 for the first object.
  • ruleElementIndex   the index of the element; starting at zero for the initial element.
  • newValue   the new element value to use, in a range from 0 to 127.

Example 1:


function onWmeStart() {
  // Set the scale rule element values, to odd settings (!), for the first scale.
  var scaleRuleIndex = 0
  var itemIndex = 0
  while (itemIndex < 12) {
    wmeRuleElementSet ("Scale Rule", scaleRuleIndex, itemIndex, (itemIndex * 127) / 12)
    itemIndex = itemIndex + 1
  }
}
          

Example 2:


function onWmeStart() {
  var ruleCount = wmeObjectCountGet("Scale Rule")
  wjsLog ("Scale Rule objects=" + ruleCount)
  
  for (var scaleRuleIndex = 0; scaleRuleIndex < ruleCount; scaleRuleIndex++) {
    // Set the scale rule element values, for the scale, to stupid values!
    var ruleName = wmeObjectNameGet("Scale Rule", scaleRuleIndex)
    wjsLog ("Scale=" + ruleName)
    
    var itemIndex = 0
    while (itemIndex < 12) {
      var value = (itemIndex * 127) / 12
      wmeRuleElementSet ("Scale Rule", scaleRuleIndex, itemIndex, value)
      itemIndex = itemIndex + 1
    }
  }
}
          

wmeGeneratorEnvelopePercentGet (generatorObjectIndex, parameterName, percent)

This function returns the percent value for the specified envelope at the given percent position. The value returned is a value between 0 and 127.

The function has the following parameters:

  • generatorObjectIndex   the index of the generator object of interest.
  • parameterName   the name of the envelope parameter (e.g. Volume).
  • percent   the percent value; from 0 to 100.

Example:


function onWmeStart() {
  var generatorCount = wmeObjectCountGet("Generator")
  wjsLog ("Generator objects=" + generatorCount)
  
  for (var generatorIndex = 0; generatorIndex < generatorCount; generatorIndex++) {
    // Ramp-up every generator volume envelope!
    var generatorName = wmeObjectNameGet("Generator", generatorIndex)
    wjsLog ("Generator=" + generatorName)
    
    var percent = 0
    while (percent <= 100)
    {
      var valueWas = wmeGeneratorEnvelopePercentGet (generatorIndex, "Volume", percent)
      wjsLog ("Volume at " + percent + ", " +  "was=" + valueWas)

      var setToValue = percent + 1
      wjsLog ("set to new value =" + setToValue)
      wmeGeneratorEnvelopePercentSet (generatorIndex, "Volume", percent, setToValue)

      var valueNow = wmeGeneratorEnvelopePercentGet (generatorIndex, "Volume", percent)
      wjsLog ("Volume at " + percent + ", " +  "now=" +  valueNow + "\n")

      percent = percent + 1
    }
  }
}
          

wmeGeneratorEnvelopePercentSet (generatorObjectIndex, parameterName, percent, newValue)

This function sets the envelope value at the specified percent, for the indexed generator, to the specified value. The value must be between 0 and 127.

The function has the following parameters:

  • generatorObjectIndex   the index of the generator object of interest.
  • parameterName   the name of the envelope parameter (e.g. Volume).
  • percent   the percent value; from 0 to 100.
  • newValue   the new element value to use, in a range from 0 to 127.

Example:


function onWmeStart() {
  var generatorCount = wmeObjectCountGet("Generator")
  wjsLog ("Generator objects=" + generatorCount)
  
  for (var generatorIndex = 0; generatorIndex < generatorCount; generatorIndex++) {
    // Ramp-up every generator volume envelope!
    var generatorName = wmeObjectNameGet("Generator", generatorIndex)
    wjsLog ("Generator=" + generatorName)
    
    var percent = 0
    while (percent <= 100)
    {
      var valueWas = wmeGeneratorEnvelopePercentGet (generatorIndex, "Volume", percent)
      wjsLog ("Volume at " + percent + ", " +  "was=" + valueWas)

      var setToValue = percent + 1
      wjsLog ("set to new value =" + setToValue)
      wmeGeneratorEnvelopePercentSet (generatorIndex, "Volume", percent, setToValue)

      var valueNow = wmeGeneratorEnvelopePercentGet (generatorIndex, "Volume", percent)
      wjsLog ("Volume at " + percent + ", " +  "now=" +  valueNow + "\n")

      percent = percent + 1
    }
  }
}

wmeCellTrackIndexGet()

This function returns the track index of the Mix Cell containing the current generator/mix. This is used with various WAE related functions.

The function has no parameters

Example:


function onWmeStart() {

  var cellTrackIndex = wmeCellTrackIndexGet()

}

wmeCellColumnIndexGet()

This function returns the column index of the Mix Cell containing the current generator/mix. This is used with various WAE related functions.

The function has no parameters

Example:


function onWmeStart() {

  var cellColumnIndex = wmeCellColumnIndexGet()

}

WAE functions

WAE related functions all start with the wae prefix


waeGetFxNetworkIdForMix()

This function returns the id that can be used for manipulating the effects chain for the Global Mix FX.

The function has no parameters

Example:


function onWmeStart() {

  var fxNetworkIdForMix = waeGetFxNetworkIdForMix()

}

waeGetFxNetworkIdForCellGlobal(trackIndex, columnIndex)

This function returns the id that can be used for manipulating the effects chain for the Cell, identified by the supplied track and column indexes.

The function has the following parameters:

  • trackIndex   The track index of the cell (from 0 to 11).
  • columnIndex   The columnIndex index of the cell (from 0 to 3).

Example:


function onWmeStart() {

  var fxNetworkIdForCellAtTrack0Column1 = waeGetFxNetworkIdForCellGlobal(0, 1)

}

waeGetFxNetworkIdForCellSynthTrackColumnChannel(trackIndex, columnIndex, channel)

This function returns the id that can be used for manipulating the effects chain for the Cell, identified by the supplied track and column indexes.

The function has the following parameters:

  • trackIndex   The track index of the cell (from 0 to 11).
  • columnIndex   The columnIndex index of the cell (from 0 to 3).
  • channel   the MIDI Channel, from 0 to 15 (MIDI channel is actually displayed in the WME Network screen as 1 to 16)

Example:


function onWmeStart() {

  var synthFxNetworkIdForCellAtTrack0Column1MIDIChannel2 = waeGetFxNetworkIdForCellSynthTrackColumnChannel(0, 1, 2)

}

waeGetFxNetworkIdForCellEffectTrackColumnChannel()

This function returns the id that can be used for manipulating the effects chain for the Cell, identified by the supplied track and column indexes.

The function has the following parameters:

  • trackIndex   The track index of the cell (from 0 to 11).
  • columnIndex   The columnIndex index of the cell (from 0 to 3).
  • channel   the MIDI Channel, from 0 to 15 (MIDI channel is actually displayed in the WME Network screen as 1 to 16)

Example:


function onWmeStart() {

  var trackFxNetworkIdForCellAtTrack0Column1MIDIChannel2 = waeGetFxNetworkIdForCellEffectTrackColumnChannel(0, 1, 2)

}

waeFxNetworkAllPresetNamesGet(fxNetworkId)

This function returns an array of all FX presets that can be supplied to the FX network with the specified ID. The list returned using an FX Network ID generated by waeGetFxNetworkIdForCellSynthTrackColumnChannel is different to those using other FX network IDs (which all otherwise return the same array of values)

The function has the following parameters:

  • fxNetworkId   The id of the FX Network in question.

Example:


function onWmeStart() {

  var fxNetworkIdForMix = waeGetFxNetworkIdForMix()
  var allEffectsPresets = waeFxNetworkAllPresetNamesGet(fxNetworkIdForMix)
  
  // Display the preset names on the console
  for (var effectPresetIndex = 0; effectPresetIndex < allEffectsPresets.length; effectPresetIndex++) {
    wjsLog(allEffectsPresets.length[effectPresetIndex])
  }

  var synthFxNetworkId = waeGetFxNetworkIdForCellSynthTrackColumnChannel(0, 0, 0)
  var allSynthPresets = waeFxNetworkAllPresetNamesGet(synthFxNetworkId)

  // Display the preset names on the console
  for (var synthFxIndex = 0; synthFxIndex < allSynthPresets.length; synthFxIndex++) {
    wjsLog(allSynthPresets.length[synthFxIndex])
  }
}

waeFxNetworkRandomPresetNamesGet(fxNetworkId)

This function returns an array of all FX presets that can be supplied to the FX network with the specified ID; filtered such that only the presets that you have enabled in your current randomization scheme are returned. The list returned using an FX Network ID generated by waeGetFxNetworkIdForCellSynthTrackColumnChannel is different to those using other FX network IDs (which all otherwise return the same array of values)

The function has the following parameters:

  • fxNetworkId   The id of the FX Network in question.

Example:


function onWmeStart() {

  var fxNetworkIdForMix = waeGetFxNetworkIdForMix()
  var allEffectsPresets = waeFxNetworkRandomPresetNamesGet(fxNetworkIdForMix)
  
  // Display the preset names on the console
  for (var effectPresetIndex = 0; effectPresetIndex < allEffectsPresets.length; effectPresetIndex++) {
    wjsLog(allEffectsPresets.length[effectPresetIndex])
  }

  var synthFxNetworkId = waeGetFxNetworkIdForCellSynthTrackColumnChannel(0, 0, 0)
  var allSynthPresets = waeFxNetworkRandomPresetNamesGet(synthFxNetworkId)

  // Display the preset names on the console
  for (var synthFxIndex = 0; synthFxIndex < allSynthPresets.length; synthFxIndex++) {
    wjsLog(allSynthPresets.length[synthFxIndex])
  }
}

waeFxNetworkPresetSet(fxNetworkId, fxPreset)

This function applies the specified FX Preset to the specified FX Network

The function has the following parameters:

  • fxNetworkId   The id of the FX Network in question.
  • fxPreset   The preset to apply to the FX Network

Example:


function onWmeStart() {

  var fxNetworkIdForMix = waeGetFxNetworkIdForMix()
  waeFxNetworkPresetSet(fxNetworkIdForMix, "fx/Filter/Filter 4Hz autowah.fxm")
}

waeFxNetworkPresetSet()

This function returns the cell index for the current mix.

The function has the following parameters:

  • fxNetworkId   The id of the FX Network in question.
  • fxPreset   The preset to apply to the FX Network

Example:


function onWmeStart() {

  var fxNetworkIdForMix = waeGetFxNetworkIdForMix()
  waeFxNetworkPresetSet(fxNetworkIdForMix, "fx/Filter/Filter 4Hz autowah.fxm")
}

WTE functions

WTE related functions all start with the wte prefix


wteRandomWordsGet (numberOfWords)

This function returns a string containing a number of random words.

The function has the following parameters:

  • numberOfWords   The number of random words to return.

Example:


function onWmeStart() {

  // Make a string with 3 random words
  var ttmText = wteRandomWordsGet(3)

  // Set the TTM text using our random string
  wmeParameterSet("Text Pattern Text", ttmText)
}

wteShuffleWords (textToShuffle)

This function returns a string containing a shuffled version of the suppled text. The words preserved from the supplied text, but the order of those words is changed.

The function has the following parameters:

  • textToShuffle   The text string to shuffle.

Example:


function onWmeStart() {

  // Make a string that is a random shuffle of words
  var textToShuffle = "Shuffle these four words"
  var ttmText = wteShuffleWords(textToShuffle)

  // Set the TTM text using our shuffled string
  wmeParameterSet("Text Pattern Text", ttmText)
}

wteShuffleCharacters (textToShuffle)

This function returns a string containing a shuffled version of the suppled text. All the characters are shuffled; words are broken-up.

The function has the following parameters:

  • textToShuffle   The text string to shuffle.

Example:


function onWmeStart() {

  // Make a string that is a random shuffle of characters
  var textToShuffle = "Shuffle these characters"
  var ttmText = wteShuffleCharacters(textToShuffle)

  // Set the TTM text using our shuffled string
  wmeParameterSet("Text Pattern Text", ttmText)
}

Scripting Cookbook

Trigger Script Cookbook

A great way to start thinking about Event Handler Script Functions, is to look at various real examples of how to do various interesting things with Event Handler Script Functions!

Example: How to choose a random Mix Root every time the mix starts


// Choose a random root

function chooseRandomRoot() {
  var roots = ["A", "A#", "B", "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#"]

  var rootIndex = wjsRandomGetFromTo(0, roots.length-1)
  var newRoot = roots[rootIndex]
  return newRoot
}

function onWmeStart() {
  wjsLog ("onWmeStart!")

  var newRoot = chooseRandomRoot()
  wmeParameterSet("Mix Root", newRoot)
  wjsLog ("Mix Root now=" + newRoot)
}
 

Example: Change the scale to use depending on time of day

This is a script that you could use as a cell-level Bar trigger script.


function onWmeStart() {
  var date = new Date()
  var hour = date.getHours()
  if ((hour > 20) || (hour <8)) {
    wmeParameterSet("Scale Rules", "early morning scale")
  } else {
    wmeParameterSet("Scale Rules", "middle of day scale")
  }
}
          

Example: randomly select a pattern to use for a generator

This is a generator-level Bar trigger script.


function onWmeStart() {
  // Get a random integer between 1 and 3 inclusive.
  var value = wjsRandomGetFromTo (1, 3)

  wjsLog ("value=" + value)

  var patternString = ""
  if (value == 1) {
    patternString = "<100 B 240 1>"
  } else if (value == 2) {
    patternString = "<100 B 120 1 120 2>"
  } else {
    patternString = "<100 B 60 1 60 2 60 3 60 4>"
  }

  wmeParameterSet("Patterns", patternString)
}
          

Example: script trigger that allows Event Handler Script Functions to emit MIDI CC events, with an optional delay

This is a script that you could use as a cell-level Bar trigger script.


function onWmeBar(bar) {

  // Generator trigger...
  // Apply a pan sweep through the bar from left to right,
  // to show-off the use of wmeMIDISendCC.
  
  wjsLog ("onWmeBar(" + index + ") - Generator")

  var barDuration = wmeBarDurationGet()
  
  wjsLog ("barDuration=" + barDuration)

  var midiChannel = wmeGeneratorMIDIChannelGet()
  var delay = 0
  var ccController = 10 // Pan controller!
  var value = 0
  while (delay <= barDuration) {
    var value = (127 * delay) / barDuration
    // Note that the "delay" is optional; we're using the in this specific
    // demo, to get a sweep effect from start to end of the bar.
    wmeMIDISendCC(midiChannel, ccController, value, delay)
    delay = delay + 20
  }
}
          

Example: cell bar event trigger, that automatically adjusts the mix root and tempo every 2 bars


function onWmeBar(bar) {

  // Cell trigger...
  // Change bar / tempo every 2 bars...

  wjsLog ("onWmeBar(" + bar + ") - Mix")

  if ( ((bar + 1) % 2) == 0) {
    wjsLog ("bar=" + bar)

    var rootWas = wmeParameterGet("Mix Root")

    wjsLog ("Mix Root was=" + rootWas)

    // Every 2 bars, change the root at random,
    // from all those available!
    var roots = ["A", "A#", "B", "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#"]

    var rootIndex = wjsRandomGetFromTo(0, roots.length-1)
    var newRoot = roots[rootIndex]
    wjsLog ("New root=" + newRoot)

    wmeParameterSet("Mix Root", newRoot)

    // Set tempo as well; to a value related to the selected root!
    var tempoWas = wmeParameterGet("Tempo")
    wjsLog ("Mix tempo was=" + tempoWas)

    var newTempo = 100 + rootIndex * 5
    wjsLog ("New tempo=" + newTempo)
    wmeParameterSet("Tempo", newTempo)
  }
}
          

Example: cell bar event trigger, that automatically adjusts the Mix Root and Scale Rule every 2 bars


// Choose a random root

function chooseRandomRoot() {
  var roots = ["A", "A#", "B", "C", "C#", "D", "D#", "E", "F", "F#", "G", "G#"]

  var rootIndex = wjsRandomGetFromTo(0, roots.length-1)
  var newRoot = roots[rootIndex]
  return newRoot
}

// Check if the specified Scale Rule name exists in the mix

function getDoesScaleRuleExistWithThisName(lookForRuleName) {
  var scaleRuleCount = wmeObjectCountGet("Scale Rule")
  //wjsLog ("Scale Rules objects=" + scaleRuleCount)

  for (var index = 0; index < scaleRuleCount; index++) {
    var scaleRuleName = wmeObjectNameGet("Scale Rule", index)

    // wjsLog ("scaleRuleName=" + scaleRuleName)

    if (lookForRuleName == scaleRuleName) {
      // Found the rule, so return true.
      return true
    }
  }

  // To get here, the rule wasn't found, so return false.

  return false
}


// Event Triggers

function onWmeBar(bar) {

  // Cell trigger...
  // Change bar / scale rule every 2 bars...
  // Note that this requires you to have at least two scale rules;
  // one called "Major" and one called "Minor"

  wjsLog ("onWmeBar(" + bar + ") - Mix")

  // Every 2 bars, change the root at random, from all those available!
  if ( ((bar + 1) % 2) == 0) {
    wjsLog ("bar=" + bar)

    var rootWas = wmeParameterGet("Mix Root")

    wjsLog ("Mix Root was=" + rootWas)
    var newRoot = chooseRandomRoot()
    wmeParameterSet("Mix Root", newRoot)
    wjsLog ("Mix Root now=" + newRoot)

    // Set scale as well; to a value related to the selected root.

    // Choose one of two Scale Rule names at random.

    var useRuleName = ""
    if (wjsRandomGetFromTo(0, 100) <= 50) {
      useRuleName = "Major"
    } else {
      useRuleName = "Minor"
    }

    if (getDoesScaleRuleExistWithThisName(useRuleName)) {
      wjsLog ("Mix Scale Rule set to=" + useRuleName)

      // Apply rule to all generators!
      var generatorCount = wmeObjectCountGet("Generator")
      // wjsLog ("Generator objects=" + generatorCount)

      for (var generatorIndex = 0; generatorIndex < generatorCount; generatorIndex++) {
        // wjsLog ("Generator name=" + wmeObjectNameGet("Generator", generatorIndex))
        wmeObjectParameterSet("Generator", generatorIndex, "Scale Rules", useRuleName)
      }
    } else {
      wjsLog("Warning - rule name not found=" + useRuleName)
    }
  }
}

          

Example: cell start event trigger, that automatically adjusts the tempo to suit the time of day


function onWmeStart() {
  wjsLog ("Mix!")

  // Wotja script to get hour of day as 24-hour clock value
  // ... and adjust tempo accordingly!
  var date = new Date()
  var hour = date.getHours()
  if ((hour > 20) || (hour <8)) {
    wjsLog ("late night / early morning!")
    var randomValue = wjsRandomGetFromTo(0,50)
    wmeParameterSet("Tempo", 50 + randomValue)
  } else {
    wjsLog ("middle of day!")
    var randomValue = wjsRandomGetFromTo(0,50)
    wmeParameterSet("Tempo", 100 + randomValue)
  }
}
          

Example: generator start event trigger, that automatically cycles the Chord Depth every time it starts playback


function onWmeStart() {
  wjsLog ("Generator!")

  var chordDepth = wmeParameterGet("Chord Depth")

  // Convert any string value to integer, then add one.
  chordDepth = parseInt(chordDepth) + 1
  
  // Loop the value around if it gets larger than we want.
  if (chordDepth > 8) {
    chordDepth = 1
  }
  wmeParameterSet("Chord Depth", chordDepth)
}
          

Example: generator event trigger, that automatically changes Chord Depth every bar


function onWmeBar(bar) {
  wjsLog ("onWmeBar, bar=" + bar)
  var chordDepth = wmeParameterGet("Chord Depth")

  // Convert any string value to integer, then add one.
  chordDepth = parseInt(chordDepth) + 1
  
  // Loop the value around if it gets larger than we want.
  if (chordDepth > 8) {
    chordDepth = 1
  }
  
  wmeParameterSet("Chord Depth", chordDepth)
}
          

Example: bringing generators into the mix

In this example, imagine that you have a mutating drum Generator that you want to have muted at the start of the mix and come in with a bang at the start of bar 20. And you don't want the mutations to start until bar 21...

How would that work in the world of script?

Here is the Generator Start trigger:


function onWmeStart() {
  // When we start, disable mutation for this Generator!
  // And set mute, too!
  wmeParameterSet("Mute", "Yes")
  wmeParameterSet("Mutation Factor", 0)
}
          

Here is the Generator Bar trigger:


function onWmeBar(bar) {
  if (bar == 20) {
    // At bar 20, unmute the generator!
    wmeParameterSet("Mute", "No")
  }

  if (bar == 21) {
    // At bar 21, adjust the mutation factor!
    wmeParameterSet("Mutation Factor", 20)
  }
}
          

The power of using scripts like this, is that:

  • The drums alway start on the bar specified.
  • They don't morph until they are audible.
  • The drum elements can now make staggered entry despite all being on the same MIDI channel.

Example: Emit MIDI CC in response to composed note events


var GLastNote = null

function onWmeGeneratorComposed(generatorIndex, noteon, channel, pitch, velocity) {
  // Keep track of last composed note using the global (for this generator)
  // called GLastNote ...
  // Note that the "pitch" parameter should be ignored when noteon is false.

  midiChannel = wmeGeneratorMIDIChannelGet()

  if (noteon) {
    if (GLastNote != null) {
      wmeMIDISendCC(midiChannel, 11, GLastNote, 10)
    }

    GLastNote = pitch
    wmeMIDISendCC(midiChannel, 11, pitch, 0)
  } else {
    if (GLastNote != null) {
      wmeMIDISendCC(midiChannel, 11, GLastNote, 10)
      GLastNote = null
    }
  }
}
         

Example: Change TTM Text for Generator At Start of Mix


function makeRandomText() {
  // Make some random TTM text.
  // We show 3 different techniques!
  // Choose one of these to use at random.
  var technique = wjsRandomGetFromTo(0, 2)
  var ttmText = ""

  switch (technique) {
  case 0:
    // Make a string with 3 random words
    ttmText = wteRandomWordsGet(3)
    break
  case 1:
    // Make a string that is a random shuffle of words
    ttmText = "Shuffle these four words"
    ttmText = wteShuffleWords(ttmText)
    break
  default:
    // Make a string that is a random shuffle of characters
    ttmText = "Shuffle these characters"
    ttmText = wteShuffleCharacters(ttmText)
    break
  }

  wjsLog("random ttmText=", ttmText)

  return ttmText
}

function onWmeStart() {

  // Generate some random TTM text!
  var ttmText = makeRandomText()

  // Now that we have our string, set it!
  wmeParameterSet("Text Pattern Text", ttmText)
}
          

Example: Change TTM Repeats at Start


function onWmeStart() {
  // Set the TTM property "Text Pattern Repeats" to 2

  wmeParameterSet("Text Pattern Repeats", 2)
}
          

Example: Change TTM Text At Start Then Restore After 4 bars


// Complex scripting example:
// - At mix start, apply random TTM Text.
// - After 4 bars, or at mix stop - restore the original TTM Text.

// The original TTM text is stored in this "global" variable
var GOriginalTTMText = ""

// The value we last set in onWmeStart
var GLastSetTTMText = ""

function setRandomTTMText() {
  // Take a copy of the original TTM text
  GOriginalTTMText = wmeParameterGet("Text Pattern Text")
  wjsLog("GOriginalTTMText=" + GOriginalTTMText)

  // Make a string with 3 random words
  var ttmText = wteRandomWordsGet(3)
  wjsLog("ttmText=" + ttmText)

  GLastSetTTMText = ttmText

  // Now that we have our string, set it!
  wmeParameterSet("Text Pattern Text", ttmText)
}

function restoreOriginalTTMText() {

  var ttmNow = wmeParameterGet("Text Pattern Text")
  wjsLog("restoreOriginalTTMText, ttmNow=" + ttmNow)

  if (ttmNow != GLastSetTTMText) {
    wjsLog("The user value has changed since last random set - keep the current value")
  } else {
    wjsLog("Restoring TTM Text to=" + GOriginalTTMText)
    wmeParameterSet("Text Pattern Text", GOriginalTTMText)
  }
}

//
// Trigger script functions
//

function onWmeStart() {

  wjsLog("onWmeStart")

  setRandomTTMText()
}

function onWmeBar(bar) {
  // On the 4th bar, restore the TTM text... UNLESS the user
  // has already changed the value through the UI.

  wjsLog("onWmeBar, bar=" + bar)

  if (bar == 4) {

    wjsLog("onWmeBar, bar 4!")

    restoreOriginalTTMText()
  }
}

function onWmeStop() {
  wjsLog("onWmeStop")
  // At the end, restore the TTM text... UNLESS the user
  // has already changed the value through the UI.
  restoreOriginalTTMText()
}

          

Example: Cell: Query All Synth and Track Presets at Start


function onWmeStart() {

  // Query what Synth and Effect presets are available, and list them in the Script Console

  var trackIndex = 0
  var columnIndex = 0
  var channel = 1

  var fxNetworkIdSynth = waeGetFxNetworkIdForCellSynthTrackColumnChannel(trackIndex, columnIndex, channel)
  var fxNetworkIdTrack = waeGetFxNetworkIdForCellEffectTrackColumnChannel(trackIndex, columnIndex, channel)

  var synthFxPresets = waeFxNetworkAllPresetNamesGet(fxNetworkIdSynth)
  wjsLog("All synthFxPresets.length=" + synthFxPresets.length)

  for (var synthFxIndex = 0; synthFxIndex < synthFxPresets.length; synthFxIndex++) {
    wjsLog(synthFxPresets[synthFxIndex])
  }

  var trackFxPresets = waeFxNetworkAllPresetNamesGet(fxNetworkIdTrack)
  wjsLog("All trackFxPresets.length=" + trackFxPresets.length)

  for (var trackFxIndex = 0; trackFxIndex < trackFxPresets.length; trackFxIndex++) {
    wjsLog(trackFxPresets[trackFxIndex])
  }
}

Example: Cell: Query And Set Random Effects and Patches


function onWmeStart() {

  // Generate a set of FX Network IDs, that are used for querying and setting different FX presets.
  var fxNetworkIdMix = waeGetFxNetworkIdForMix()
  var fxNetworkIdMixTrack0 = waeGetFxNetworkIdForMixTrack(0)
  var fxNetworkIdCellGlobalTrack0Column0 = waeGetFxNetworkIdForCellGlobal(0,0)
  var fxNetworkIdCellSynthTrack0Column0Channel1 = waeGetFxNetworkIdForCellSynthTrackColumnChannel(0,0,1)
  var fxNetworkIdCellEffectTrack0Column0Channel1 = waeGetFxNetworkIdForCellEffectTrackColumnChannel(0,0,1)

  // Query what Synth and Effect presets are available, and list them in the Script Console

  var trackFxPresets = waeFxNetworkRandomPresetNamesGet(fxNetworkIdMixTrack0)
  wjsLog("trackFxPresets.length=" + trackFxPresets.length)

  for (var trackFxIndex = 0; trackFxIndex < trackFxPresets.length; trackFxIndex++) {
    wjsLog("trackFxPreset=" + trackFxPresets[trackFxIndex])
  }

  var synthFxPresets = waeFxNetworkRandomPresetNamesGet(fxNetworkIdCellSynthTrack0Column0Channel1)
  wjsLog("synthFxPresets.length=" + synthFxPresets.length)

  for (var synthFxIndex = 0; synthFxIndex < synthFxPresets.length; synthFxIndex++) {
    wjsLog("synthFxPreset=" + synthFxPresets[synthFxIndex])
  }

  if (synthFxPresets.length > 0) {
    // Set a random synth patch (from those available) for track 0, column 0, channel 1
    // Now... set patch random for cell 1!
    var synthPresetForTrack0Column0Channel1 = synthFxPresets[wjsRandomGetFromTo(0,synthFxPresets.length-1)]
    wjsLog("Use synthPresetForTrack0Column0Channel1=" + synthPresetForTrack0Column0Channel1)

    waeFxNetworkPresetSet(fxNetworkIdCellSynthTrack0Column0Channel1, synthPresetForTrack0Column0Channel1)
  }

  if (trackFxPresets.length > 0) {
    // Set a random FX patch (from those available) for the global Mix FX
    var fxForMix = trackFxPresets[wjsRandomGetFromTo(0,trackFxPresets.length-1)]
    wjsLog("Use fxForMix=" + fxForMix)
    waeFxNetworkPresetSet(fxNetworkIdMix, fxForMix)
  }
}


Example: Cell: Query And Set Random Global Preset at Start


function onWmeStart() {

  // Generate the FX Network ID ... for the Global Mix FX
  var fxNetworkIdMix = waeGetFxNetworkIdForMix()

  // Query what Effect presets are available... for the Global Mix FX
  var trackFxPresets = waeFxNetworkRandomPresetNamesGet(fxNetworkIdMix)

  // Set a random FX patch (from those available) for the global Mix FX
  // Check - has the user got any suitable FX enabled?
  if (trackFxPresets.length > 1) {
    // Yes, we have at least one suitable FX preset available

    // Choose one at random...
    var randomIndex = wjsRandomGetFromTo(0,trackFxPresets.length-1)
    var fxForMix = trackFxPresets[randomIndex]

    wjsLog("Use fxForMix=" + fxForMix)

    // Apply the randomly selected preset
    waeFxNetworkPresetSet(fxNetworkIdMix, fxForMix)
  }
}

Example: Generator Query And Set Random Synth and Track Preset at Start


function onWmeStart() {

  // Generator trigger script - apply a random Synth patch at start

  // Generate the FX Network ID ... for the Generator's cell and Generator's MIDI channel

  var trackIndex = wmeCellTrackIndexGet()
  var columnIndex = wmeCellColumnIndexGet()
  var channel = wmeGeneratorMIDIChannelGet()
  wjsLog("Generator trackIndex=" + trackIndex + ", columnIndex=" + columnIndex + ", channel=" + channel)

  var fxNetworkIdSynth = waeGetFxNetworkIdForCellSynthTrackColumnChannel(trackIndex, columnIndex, channel)
  var fxNetworkIdTrack = waeGetFxNetworkIdForCellEffectTrackColumnChannel(trackIndex, columnIndex, channel)

  // Query what Synth and Effect presets are available, and list them in the Script Console

  var synthFxPresets = waeFxNetworkRandomPresetNamesGet(fxNetworkIdSynth)
  wjsLog("synthFxPresets.length=" + synthFxPresets.length)

  for (var synthFxIndex = 0; synthFxIndex < synthFxPresets.length; synthFxIndex++) {
    wjsLog("synthFxPreset=" + synthFxPresets[synthFxIndex])
  }

  var trackFxPresets = waeFxNetworkRandomPresetNamesGet(fxNetworkIdTrack)
  wjsLog("trackFxPresets.length=" + trackFxPresets.length)

  for (var trackFxIndex = 0; trackFxIndex < trackFxPresets.length; trackFxIndex++) {
    wjsLog("trackFxPreset=" + trackFxPresets[trackFxIndex])
  }

  if (synthFxPresets.length > 0) {
    // Set a random synth patch (from those available) for track 0, column 0, channel 1
    // Now... set patch random for cell 1!
    var synthPreset = synthFxPresets[wjsRandomGetFromTo(0,synthFxPresets.length-1)]
    wjsLog("Use synthPreset=" + synthPreset)

    waeFxNetworkPresetSet(fxNetworkIdSynth, synthPreset)
  }

  if (trackFxPresets.length > 0) {
    // Set a random FX patch (from those available) for the global Mix FX
    var trackPreset = trackFxPresets[wjsRandomGetFromTo(0,trackFxPresets.length-1)]
    wjsLog("Use fxForMix=" + trackPreset)
    waeFxNetworkPresetSet(fxNetworkIdTrack, trackPreset)
  }
}

Example: Mix Level script, showing various functions


  // Scripting API methods related mix-level functions - various examples.

  function mixObjectParameterGetAndSet() {
    // mixObjectParameterGet
    // mixObjectParameterSet
  
    // Example usage:
    var scaleRuleValue = mixObjectParameterGet("Scale Rule", 0, "Value")
    print("Mix scale rule index 0, value was = " + scaleRuleValue)
    scaleRuleValue = mixObjectParameterSet("Scale Rule", 0, "Value", "1.0000 0.4961 0.0000 0.4961 0.0000 0.4961 0.0000 1.0000 0.4961 0.0000 0.4961 0.0000")
    scaleRuleValue = mixObjectParameterGet("Scale Rule", 0, "Value")
    print("Mix scale rule index 0, value now = " + scaleRuleValue)
  }
  
  function mixObjectQuerying() {
    // mixObjectNameGet
    // mixObjectIndexGet
    // mixObjectCountGet
  
    // Example usage:
    var scaleRuleCount = mixObjectCountGet("Scale Rule")
    print("Mix scale rule count = " + scaleRuleCount)
    var scaleRuleName = mixObjectNameGet("Scale Rule", 0)
    print("Mix scale rule 0 has name = " + scaleRuleName)
    var indexOfScaleRuleName = mixObjectIndexGet("Scale Rule", scaleRuleName)
    print("Mix scale rule with name=" + scaleRuleName + " is at index=" + indexOfScaleRuleName)
  }
  
  function mixCellObjectQuerying() {
    // mixCellObjectNameGet
    // mixCellObjectIndexGet
    // mixCellObjectCountGet
  
    // Example usage:
    var columnIndex = 0
    var trackIndex = 0
    var scaleRuleCount = mixCellObjectCountGet(columnIndex, trackIndex, "Scale Rule")
    print("Mix cell(" + columnIndex + "," + trackIndex + ") : scale rule count = " + scaleRuleCount)
    var scaleRuleName = mixCellObjectNameGet(columnIndex, trackIndex, "Scale Rule", 0)
    print("Mix cell(" + columnIndex + "," + trackIndex + ") : scale rule 0 has name = " + scaleRuleName)
    var indexOfScaleRuleName = mixCellObjectIndexGet(columnIndex, trackIndex, "Scale Rule", scaleRuleName)
    print("Mix cell(" + columnIndex + "," + trackIndex + ") : scale rule with name=" + scaleRuleName + " is at index=" + indexOfScaleRuleName)
  }
  
  function mixCellParameterGetAndSet() {
    // mixCellObjectParameterSet
    // mixCellObjectParameterGet
  
    // Example usage:
    var columnIndex = 0
    var trackIndex = 0
    var generatorIndex = 0
    var generatorValue = mixCellObjectParameterGet(columnIndex, trackIndex, "Generator", generatorIndex, "Scale Rules")
    print("generatorValue = " + generatorValue)
    mixCellObjectParameterSet(columnIndex, trackIndex, "Generator", generatorIndex, "Scale Rules", "Mix\nDefault")
    generatorValue = mixCellObjectParameterGet(columnIndex, trackIndex, "Generator", generatorIndex, "Scale Rules")
    print("generatorValue = " + generatorValue)
    var cellValue = mixCellObjectParameterGet(columnIndex, trackIndex, "Cell", "Scale Rules")
    print("cellValue = " + cellValue)
    mixCellObjectParameterSet(columnIndex, trackIndex, "Cell", "Scale Rules", "Mix\nDefault")
    cellValue = mixCellObjectParameterGet(columnIndex, trackIndex, "Cell", "Scale Rules")
    print("cellValue = " + cellValue)
  }
  
  function mixParameterGetAndSet() {
    // mixParameterSet
    // mixParameterGet
  
    // Example usage:
    var mixValue = mixParameterGet("Scale Rules")
    print("Mix: Scale Rules = " + mixValue)
    mixParameterSet("Scale Rules", "Default")
    mixValue = mixParameterGet("Scale Rules")
    print("Mix: Scale Rules = " + mixValue)
  
    mixValue = mixParameterGet("Mix Root")
    print("Mix: Mix Root = " + mixValue)
    mixParameterSet("Mix Root", "C")
    mixValue = mixParameterGet("Mix Root")
    print("Mix: Mix Root = " + mixValue)
  
    mixValue = mixParameterGet("Tempo")
    print("Mix: Tempo = " + mixValue)
    mixParameterSet("Tempo", "100")
    mixValue = mixParameterGet("Tempo")
    print("Mix: Tempo = " + mixValue)
  }
  
  function mixVolumeGetAndSet() {
    // mixVolumeSet
    // mixVolumeGet
  
    // Example usage:
    var value = mixVolumeGet() // Get current value, from 0 to 127 (127 is default)
    print(value)
    mixVolumeSet(0)   // Set to minimum volume
    value = mixVolumeGet()
    print(value)
    mixVolumeSet(127) // Set to maximum volume
    value = mixVolumeGet()
    print(value)
  }
  
  function mixTrackVolumeGetAndSet() {
    // mixTrackVolumeSet
    // mixTrackVolumeGet
  
    // Example usage:
    var trackIndex = 0
    var value = mixTrackVolumeGet(trackIndex) // Value from 0 to 127, 127 is max, 0 is silent
    print("Track volume = " + value)
    mixTrackVolumeSet(trackIndex, 100) // Value from 0 to 127, 127 is max, 0 is silent
    value = mixTrackVolumeGet(trackIndex) // Value from 0 to 127, 127 is max, 0 is silent
    print("Track volume = " + value)
  }
  
  function mixTrackPanGetAndSet() {
    // mixTrackPanSet
    // mixTrackPanGet
  
    // Example usage:
    var trackIndex = 0
    var value = mixTrackPanGet(trackIndex) // Value from 0 to 127, 127 is max, 0 is silent
    print("Track pan = " + value)
    mixTrackPanSet(trackIndex, 64) // Value from 0 to 127, 127 is max, 0 is silent
    value = mixTrackPanGet(trackIndex) // Value from 0 to 127, 127 is max, 0 is silent
    print("Track pan = " + value)
  }

Example: Mix Level script, showing various functions and triggers


  //
  // Example of script functions and triggers to cycle the Mix Default rule and root,
  // through the progression used in Chopin's 24 preludes.
  //
  
  const cAllScaleRules = {
  
    "Major":
      "1 0 0.5 0 1 0.5 0 1 0 0.5 0 0.5",
    "Minor":
      "1 0 1 1 0 1 0 1 1 0 1 0",
    "All Scale Major":
      "1 0 1 0 1 1 0 1 0 1 0 1",
    "All Scale Minor Natural":
      "1 0 1 1 0 1 0 1 1 0 1 0",
    "All Scale Minor Harmonic":
      "1 0 1 1 0 1 0 1 0 0 0 1",
    "Chord Major triad":
      "1 0 0 0 1 0 0 1 0 0 0 0",
    "Chord Major sixth":
      "1 0 0 0 1 0 0 1 0 1 0 0",
    "Chord Dominant seventh":
      "1 0 0 0 1 0 0 1 0 0 1 0",
    "Chord Major seventh":
      "1 0 0 0 1 0 0 1 0 0 0 1",
    "Chord Augmented triad":
      "1 0 0 0 1 0 0 0 1 0 0 0",
    "Chord Augmented seventh":
      "1 0 0 0 1 0 0 0 1 0 1 0",
    "Chord Minor triad":
      "1 0 0 1 0 0 0 1 0 0 0 0",
    "Chord Minor sixth":
      "1 0 0 1 0 0 0 1 0 1 0 0",
    "Chord Minor seventh":
      "1 0 0 1 0 0 0 1 0 0 1 0",
    "Chord Minor-major seventh":
      "1 0 0 1 0 0 0 1 0 0 0 1",
    "Chord Diminished triad":
      "1 0 0 1 0 0 1 0 0 0 0 0",
    "Chord Diminished seventh":
      "1 0 0 1 0 0 1 0 0 1 0 0",
    "Chord Half-diminished seventh":
      "1 0 0 1 0 0 1 0 0 0 1 0",
    "Chord Augmented major seventh":
      "1 0 0 0 1 0 0 0 1 0 0 1",
    "Chord Seven-six":
      "1 0 0 0 1 0 0 1 0 0 1 0",
    "Chord Mixed-third":
      "1 0 0 1 1 0 0 1 0 0 0 0",
    "Chord Suspended fourth":
      "1 0 0 0 0 1 0 1 0 0 0 0",
    "Chord Dominant ninth":
      "1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 0",
    "Chord Dominant eleventh":
      "1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 0 0",
    "Chord Dominant thirteenth":
      "1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 0",
    "Chord Seventh minor ninth":
      "1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0",
    "Chord Seventh sharp ninth":
      "1 0 0 0 1 0 0 1 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0",
    "Chord Seventh augmented eleventh":
      "1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 0 1 0 0 0 0 0 0",
    "Chord Seventh diminished thirteenth":
      "1 0 0 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 0 0 0 0",
    "Chord Add nine":
      "1 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0",
    "Chord Add fourth":
      "1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0",
    "Chord Add sixth":
      "1 0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0",
    "Chord Six-nine":
      "1 0 0 0 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0",
    "Chord Suspended second":
      "1 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0",
    "Chord Jazz sus":
      "1 0 0 0 0 1 0 1 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0",
    "Mode Ionian (I)":
      "1 0 1 0 1 1 0 1 0 1 0 1",
    "Mode Dorian (II)":
      "1 0 1 1 0 1 0 1 0 1 1 0",
    "Mode Phrygian (III)":
      "1 1 0 1 0 1 0 1 1 0 1 0",
    "Mode Lydian (IV)":
      "1 0 1 0 1 0 1 1 0 1 0 1",
    "Mode Mixolydian (V)":
      "1 0 1 0 1 1 0 1 0 1 1 0",
    "Mode Aeolian (VI)":
      "1 0 1 1 0 1 0 1 1 0 1 0",
    "Mode Locrian (VII)":
      "1 1 0 1 0 1 1 0 1 0 1 0"
  }
  
  const cProgression = [
    "C Major",
    "A Minor",
    "G Major",
    "E Minor",
    "D Major",
    "B Minor",
    "A Major",
    "F# Minor",
    "E Major",
    "C# Minor",
    "B Major",
    "G# Minor",
    "F# Major",
    "Eb Minor",
    "Db Major",
    "Bb Minor",
    "Ab Major",
    "F Minor",
    "Eb Major",
    "C Minor",
    "Bb Major",
    "G Minor",
    "F Major",
    "D Minor"]
  
  const cChangeEveryBars = 4
  
  var cycleIndex = 0; // We cycle round from 0 through to cProgression.length-1, and back again...
  
  function applyScaleName(scaleName) {
    var newRuleValue = cAllScaleRules[scaleName]
  
    mixObjectParameterSet("Scale Rule", 0, "Value", newRuleValue)
  
    var newRuleValue = mixObjectParameterGet("Scale Rule", 0, "Value")
    wjsLog ("Scale Rule Value (" + scaleName + "(, now=" + newRuleValue)
  }
  
  function applyRandomTempo() {
    var newTempo = 60 + wjsRandomGetFromTo(0, 60)
      
    mixParameterSet("Tempo", newTempo)
  
    var testTempo = mixParameterGet("Tempo")
    wjsLog ("Mix tempo=" + testTempo)
  }
  
  function applyProgression() {
  
    var item = cProgression[cycleIndex]
  
    // Split into Root, and scale
    var pairOfItems = item.split(" ");
  
    var newRoot = pairOfItems[0]
  
    mixParameterSet("Mix Root", newRoot)
    var testRoot = mixParameterGet("Mix Root")
    wjsLog ("Mix Root now=" + testRoot)
  
    // Set scale as well; to a value related to the selected root.
  
    var scaleName = pairOfItems[1] 
    applyScaleName(scaleName)
  
    applyRandomTempo()
  }
  
  function startProgression() {
    cycleIndex = 0
  
    applyProgression()
  }
  
  function nextProgression() {
    cycleIndex = cycleIndex + 1
    if (cycleIndex >= cProgression.length) {
      // We've reached the end - go back to the beginning...
      cycleIndex = 0
    }
  
    applyProgression()
  }
  
  // Check if the specified Scale Rule name exists in the mix
  function checkForChangeInProgression(bar) {
  
    // Every 4 bars (or whatever...), change the root and scale, following the progression
    // seen in Chopin's preludes...
  
    if ( ((bar + 1) % cChangeEveryBars) == 0) {
  
      nextProgression()
    }
  }
  
  // Event Triggers
  
  function onWmeStart() {
    startProgression()
  }
  
  function onWmeBar(bar) {
  
    wjsLog ("Mix: onWmeBar(" + bar + ") - Cell")
    checkForChangeInProgression(bar)
  }
    

Hyperinstrument

What is a hyperinstrument?

A hyperinstrument can be defined as being an instrument that can have extraordinary, semi-automated response to relatively simple real-time inputs.

Wotja is a hyperinstrument in many ways. For example from simple interaction in real-time through mouse and keyboard, you can have it generate extraordinary, ever-changing music that responds to your inputs. Wotja also directly responds to any real-time MIDI note data fed into it, for example from a MIDI keyboard or other MIDI controller; where you feed MIDI data into Wotja, you will find that Wotja can automatically harmonize its generators with all incoming MIDI note data. You can also configure Wotja to respond in many advanced ways to both MIDI note events and MIDI control events (otherwise known as "MIDI CCs").

Wotja can function as a hyperinstrument for 2 main reasons: The WME can real-time harmonies with incoming MIDI note events and control events (otherwise known as "MIDI CCs"), and Wotja's generative engine is an instrument that creates more than the sum of your direct inputs with keyboard, mouse, and MIDI. In other words, Wotja's generative engine, MIDI control, scripting and direct MIDI input harmonization all work together to make itself greater than the sum of its parts; a customizable generative hyperinstrument!

See the Hyperinstrument - Quick Start if you want to get started quickly.

How does Wotja work as a hyperinstrument?

You can respond to any incoming MIDI CC however you want; for example, to change the current scale or adjust a harmony rule in real-time in response to incoming MIDI CC events.

You can also respond to any incoming MIDI Note on/off event however you want; for example, you could use some notes (such as accidentals in a scale) to change parameter values. In other words, you can use certain specific notes to trigger various complex responses by Wotja, for example; or to enable/disable the chording parameters only for certain notes (immediately that a note is triggered!); or to change scale; or pretty much whatever you can imagine.

Here is an example of a Generator MIDI In Note trigger script that you could use in your own mix.


function onMIDIInNote(channel, noteon, pitch, velocity) {
  if (channel == wmeGeneratorMIDIChannelGet()) {
    wjsLog("onMIDIInNote for our channel!")
  }
}
          

Quick Start - Listening generators / Hyperinstrument

To have a Generator "listen" to incoming MIDI data, you need to follow the instructions below.

  1. Set "MIDI Input" to be your MIDI input device.
  2. Set the generator you want to listen to MIDI input, such that:

    • the Generator Type is Listen
    • the MIDI In Script is something like this:
    
    function onMIDIInNote(channel, noteon, pitch, velocity) {
      if (channel == wmeGeneratorMIDIChannelGet()) {
        wjsLog ("onMIDIInNote for our channel!")
      }
    }
                  
  3. You might want to set your Listening generator to auto-chord with depth of 2 or greater.

  4. If you want an different Generator to also make sounds in response to your incoming MIDI note event, set it to FOLLOW the Listening Generator.

Wotja Pak Maker

Create Zipped Paks for use in Wotja

Audio Paks: Requires Wotja 22.5+; for older Wotja see Archived Guide

Wotja in 'Pro' mode supports use of add-on content that has been zipped - we generically refer to these zip files as "Paks". Paks can include any kind of supported add-on content. They can also use folder / sub-folder structures for content organization, too, but see notes below.

We user the zip format for add-on content because it's open (there are many tools that can create zips), it allows content compression, it supports folders for organization, it's a great format for archives (as files in a zip are not overwritten) and it's perfect for distribution!

There are two main kinds of Pak we refer to:

Making Paks is easy and you can put all your zips in a /zips subfolder in the Wotja Folder, keeping them out of the way of mixes, boxes and playlists.

What can I put in a Pak?

Any content you can select to use in a Wotja mix or for the creation of auto-mixes and that would otherwise get saved to and/or picked up in the top level Wotja folder.

Use of folders is not supported unless otherwise advised.

Supported content (see also filetypes):

  • Wotja Template (.noatikl)
  • Wotja Randomization Preset (RP) (.wotjarp)
  • WAE Sound Network (.tg)
  • WAE FX Network (.fxm)
  • SF2 SoundFont (.sf2)
  • Audio Sample (.wav, .ogg)
    • Formats: WAV (8/16/24-bit PCM, 32-bit float) and Ogg; Any kHz
    • See Audio Pak
  • MIDI (.midi)

Optional (and not used in a Wotja file):

  • License (.txt)

Not supported (should not be included):

  • Wotja (.wotja)
  • Wotja Album (.wotjabox)
  • Wotja Playlist (.wotjalist)

Pak Types

We note above that a Pak can include any content you can select to use in a Wotja mix or for the creation of auto-mixes and that would otherwise get saved to and/or picked up in the top level Wotja folder.

How that content is displayed is governed by the content itself, as noted below. So, mix and match content as you wish!

IMPORTANT: Whilst you can just zip your Pak at its top level (a "flat" Pak!), we strongly suggest that you use in the zip a path that gives the Pak a unique name thus ensuring that the content in the Pak will have a unique reference. We use /intermorphic/wotja/paks/pakname/ but you might use e.g. /com/mycompany/myname/pakname/.

Note: Wotja does not support use of zipped Paks (i.e. a zipped collection of Paks).

Template Pak

  • Primary Content:
    • Wotja Templates: .noatikl (see also filetypes)
  • Other Content:
    • Include whatever else you want! For display, see other Pak types.
  • Primary Content Display:
  • Folder / Sub Folders:
    • Templates can be in the root folder of the Pak or can be put in sub-folders if required for content organization.
  • Pak Name:
    • The name of the zip file is used for LHS Pak display/ordering, i.e. My Pak 1.zip.
  • Pak List Ordering:
    • Your Paks will show in alphabetical order below any included Template Paks, or other IM Paks.
  • Tips:
    • All content items included in each Template Pak will show alphabetically in the right hand Template list ("Templates").
    • The right side list is alphabetically ordered and no file extensions are shown so if your Template Pak includes multiple content types be careful to name your content accordingly.
    • If you want to use the Pak name to organize your content you will need to put your content in separate Paks, e.g. My Pak 1.zip and My Pak 2.zip.
    • The folder structure you use in the Template Pak for content organization is not important.

Audio Pak (Wotja 22.5+)

  • Primary Content:
    • Audio samples: .wav / .ogg (see also filetypes)
    • Formats: WAV (8/16/24-bit PCM, 32-bit float) and Ogg; any kHz.
    • Note: Be aware that Wotja needs to load into memory (RAM) ALL audio samples that are used in a mix.
    • Tip: The higher the quality of the samples you use (which does make them larger, however), the better the results you will get from time stretching or pitch shifting.
    • IMPORTANT: If you want any of your audio samples to be time stretched or pitch shifted to fit the Wotja mix tempo and root then your Pak must also include a pak.xml file. Without a pak.xml file then audio samples can still be added to a mix, but none will be time stretched or pitch shifted (e.g. for foley samples).
  • pak.xml file
    • TIP: To see an example of a pak.xml that includes Sample Overrides, download this Pak , unzip it and then open its pak.xml file.
    • The pak.xml file is where you specify the "default" tempo and root of audio samples in the Pak
      • e.g. <pak tempo="90" root="D"></pak>
    • Sample Overrides:
      • You can provide in the pak.xml overrides for individual audio samples in the top level folder (or sub-folders) that may be different to the default Pak values.
      • These must be placed between the <pak> and </pak> tags (see example below).
      • Tip: Where the pak.xml default values are NOT "?" then you only need to include the sample values that you want to override, e.g.
        • <sample file="myfile.wav" tempo="64" root="A#"/> overrides both sample tempo & root
        • <sample file="myfile.wav" tempo="80" /> overrides just the sample tempo (root as pak.xml)
        • <sample file="myfile.wav" root="F" /> overrides just the sample root (pitch as pak.xml)
        • <sample file="myfolder/myfile.wav" tempo="64" root="A#"/> shows use of sample folders
      • If it better suits your content organisation a pak.xml file can be included for each sub-folder that includes audio samples, e.g. for audio samples in "My Pak/Folder1/" then "Folder1" could include a pak.xml that is concerned only with the audio samples in that folder.
    • ?:
      • Important: Whenever "?" is used, you MUST provide a pair of values, i.e. tempo="?" root="?".
      • "?" is a special value for tempo or root which is used for sounds that you do not want to be time stretched or pitch shifted when added to a mix (e.g. foley sounds), e.g.
        • e.g. <pak tempo="?" root="?"></pak>
          • Any sample overrides must then specify values for both tempo and root.
        • <sample file="myfile.wav" tempo="?" root="?"/>
    • Optional Text:
      • You may optionally include any other text you wish to e.g. source="creatorName" or year="2017" etc. but that text does not affect the operation of the Pak and it MUST go at the end of the intial "pak" tag (see below).
    • Example (copy text and paste into a text file that you rename as pak.xml)
         
      <pak tempo="90" root="D"
      source="creatorName" 
      year="2017" 
      >
        <sample file="myfile.ogg" tempo="81" root="C"/>
        <sample file="myfile.wav" tempo="64" root="A#"/>
        <sample file="shift-root-only.wav" tempo="?" root="A#"/>
        <sample file="shift-tempo-only.wav" tempo="92" root="?"/>
        <sample file="foley/myfoley.wav" tempo="?" root="?"/>
      </pak>
      
  • Other Content:
    • Include whatever else you want! For display, see other Pak types.
  • Primary Content Display:
  • Folder / Sub Folders:
    • Audio samples can be in the root folder of the Pak or can be put in sub-folders if required:
  • Pak Name:
  • Pak List Ordering:
  • Tips:

MIDI Pak

  • Primary Content:
    • MIDI files: .midi
  • Other Content:
    • Include whatever else you want! For display, see other Pak types.
  • Primary Content Display:
  • Folder / Sub Folders:
    • MIDI files can be in the root folder of the Pak or can be put in sub-folders if required for content organisation.
  • Pak Name:
  • Pak List Ordering:
  • Tips:

Synth Preset Pak

  • Primary Content:
    • Synth Preset: .tg
  • Primary Content Display:
  • Pak Folder Structure:
    • Must be the following:
      • /sounds/GroupName/PresetName
    • "sounds" must be lower case
      • e.g. /sounds/Bells/Bells1.
  • Tips:
    • The Sound Preset list is sorted alphabetically so the GroupName you choose determines where in the list you will see it.
    • The Pak file name is not important, i.e. Any name.zip.

FX Preset Pak

  • Primary Content:
    • FX Preset: .fxm
  • Primary Content Display:
  • Pak Folder Structure:
    • Must be the following:
      • /fx/GroupName/PresetName
    • "fx" must be lower case
      • e.g. /fx/GroupName/PresetName.
  • Tips:
    • The FX Preset list is sorted alphabetically so the GroupName you choose determines where in the list you will see it.
    • The Pak file name is not important, i.e. Any name.zip.

Randomization Preset (RP) Pak

  • Primary Content:
    • Randomization Preset (RP): .wotjarp
  • Primary Content Display:
  • Pak Folder Structure:
    • Must be the following:
      • /AnyOldName/RandomizationPresetGroupName/RandomizationPresetName
    • "AnyOldName" is required in the path but is not used
      • It can use any case e.g. /anyOldname/My Group/My RP 1.
  • Tips:
    • The Randomization list is sorted alphabetically, but it first displays any custom RP found in any non-included RP Groups so the "RandomizationPresetGroupName" (your RP are listed alphabetically in that).
    • The Pak file name is not important, i.e. Any name.zip.

SF2 Soundfont Pak

  • Primary Content:
    • SF2 Soundfont: .sf2
  • Primary Content Display:
    • Soundfont SF2 Paks are displayed/used via:
      • WAE Wavetable Unit.
      • They are shown in the left side of the Wavetable Unit and are sorted alphabetically according to the SF2 name (not the Pak zip name).
      • They will be displayed below the last of the included SF2 (i.e. IM NT3-MT7) and below MDB if installed.
  • Pak Folder Structure:
    • SF2 Paks do not require a special folder structure but you might still wish to use one if you want to retain the structure of the content grouping on your Mac/PC (perhaps you have licenced a loop or SF2 collection from a 3rd party and you don't want to change the organisation of it).
      • e.g. say have the following collection of SF2 files on your PC/Mac:
        • mySF2Collection1/drones/drone1.sf2
          mySF2Collection1/pads/ambient.sf2
          mySF2Collection1/synths/buzzer.sf2
      • You can zip the Pak like that BUT, as noted above, the SF2 will display in the left side list in alphabetical order irrespective of folder/subfolder structure or naming, e.g. in the order of "ambient.sf2, buzzer.sf2, drone1.sf2"
  • Tips:
    • The Pak file name is not important, i.e. Any name.zip.
    • Tip: If you want to create your own SF2 files then you may wish to check out Polyphontics, Polyphone or even Awave Studio.

Zipping your Pak

IMPORTANT: Whilst you can just zip your Pak at its top level (a "flat" Pak!), we strongly suggest that you use in the zip a path that gives the Pak a unique name thus ensuring that the content in the Pak will have a unique reference. We use /intermorphic/wotja/paks/pakname/ but you might use e.g. /com/mycompany/myname/pakname/.

macOS and Windows 10 have in-built zipping capability:

  • macOS: Right click on the folder (e.g. "fred") and select "Compress 'fred'".
  • Windows: Right click on the folder (e.g. "fred") and select "Send to" then "Compressed (zipped) folder".

If you prefer you can use your preferred Zip file utility to create your Zip.

Pak Installation

Once you have created your Pak then:

  • Copy or move it to the Wotja Folder; if you wish you can put all your Pak zips in a /zips subfolder under that.
  • Restart Wotja and your Paks should be ready and available for use!

Note: If you create, save and share mixes that reference the content in your Paks then, provided the recipient also has your Pak installed in the Wotja Folder, they should play exactly as intended!

© 2004-2022 Intermorphic Ltd. All Rights Reserved. Subject to Change. E & OE. See also Credits.