public Octave(int seed) {
		p = p_supply.clone();

		if (seed == RANDOMSEED) {
			Random rand = new Random();
			seed = rand.nextInt();
		}

		// the random for the swaps
		Random rand = new Random(seed);

		// the seed determines the swaps that occur between the default order
		// and the order we're actually going to use
		for (int i = 0; i < NUMBEROFSWAPS; i++) {
			int swapFrom = rand.nextInt(p.length);
			int swapTo = rand.nextInt(p.length);

			short temp = p[swapFrom];
			p[swapFrom] = p[swapTo];
			p[swapTo] = temp;
		}

		for (int i = 0; i < 512; i++) {
			perm[i] = p[i & 255];
			permMod12[i] = (short) (perm[i] % 12);
		}
	}