public NoteChooser(boolean noOctaveSwitch) {

    // if this is true, never transpose pitch an octave if out of bounds
    doNotSwitchOctave = noOctaveSwitch;

    /* The first number in each line represents which type of note we are
     * looking for - 0 for chord, 1 for color, 2 for random, 3 for scale
     * The next three numbers represent which notes are present of chord,
     * color, and then random
     * The last 4 numbers are probabilities for which will be chosen:
     * in order - chord, color, random, scale
     */
    String probString =
        "( (0 1 1 1 100 0 0 0) "
            + // looking for chord, have chord, color, random
            "(0 1 1 0 100 0 0 0) "
            + // looking for chord, have chord, color
            "(0 1 0 1 100 0 0 0) "
            + // looking for chord, have chord, random
            "(0 1 0 0 100 0 0 0) "
            + // looking for chord, have chord
            "(0 0 1 1 0 100 0 0) "
            + // looking for chord, have color, random
            "(0 0 1 0 0 100 0 0) "
            + // looking for chord, have color
            "(0 0 0 1 0 0 100 0) "
            + // looking for chord, have random
            "(1 1 1 1 0 100 0 0) "
            + // looking for color, have chord, color, random
            "(1 1 1 0 10 90 0 0) "
            + // looking for color, have chord, color
            "(1 1 0 1 85 0 15 0) "
            + // looking for color, have chord, random
            "(1 1 0 0 100 0 0 0) "
            + // looking for color, have chord
            "(1 0 1 1 0 100 0 0) "
            + // looking for color, have color, random
            "(1 0 1 0 0 100 0 0) "
            + // looking for color, have color
            "(1 0 0 1 0 0 100 0) "
            + // looking for color, have random
            "(3 1 1 1 0 0 0 100) "
            + // looking for scale, have chord, color, random
            "(3 1 1 0 0 0 0 100) "
            + // looking for scale, have chord, color
            "(3 1 0 1 0 0 0 100) "
            + // looking for scale, have chord, random
            "(3 1 0 0 0 0 0 100) "
            + // looking for scale, have chord
            "(3 0 1 1 0 0 0 100) "
            + // looking for scale, have color, random
            "(3 0 1 0 0 0 0 100) "
            + // looking for scale, have color
            "(3 0 0 1 0 0 100 0) "
            + // looking for scale, have random
            "(2 1 1 1 50 25 25 0) "
            + // looking for random, have chord, color, random
            "(2 1 1 0 80 20 0 0) "
            + // looking for random, have chord, color
            "(2 1 0 1 50 0 50 0) "
            + // looking for random, have chord, random
            "(2 1 0 0 100 0 0 0) "
            + // looking for random, have chord
            "(2 0 1 1 0 50 50 0) "
            + // looking for random, have color, random
            "(2 0 1 0 0 100 0 0) "
            + // looking for random, have color
            "(2 0 0 1 0 0 100 0) )"; // looking for random, have random

    probabilities = (Polylist) (Polylist.PolylistFromString(probString)).first();
  }