Pick one of 12 spokes from a color wheel to choose your "Tonic" note (base note for those of you who only can read Ben-code speak)— then decide if you want major or minor.
Mode options
Advanced options:
There will be an advanced music options panel where tempo, key, and key mapping can be set in exact detail
Normal options:
Tempo: Slow / Fast
Key: A - G / Sharp - Flat / Major - Minor
Toughness algorithms: music patterns:
Ideas:
- Every time a note is played, check for a previous time that that same note was played and begin comparing successive notes of this note and the previous. Will have "possible pattern" objects that add to the toughness if they are over 3 notes in length. Compare against previous "actual patterns" and keep count of how many times that pattern occurs (possibly changes results). Also keeps track of pattern length, so longer patterns can count for more.
- Check for patterns by measure
Ferocity note:
Key mapping: the central row of keys on the keyboard corresponds to the "white keys", or the major sequence in the current key. If the key were c, they would correspond to the white keys. The row above is used for out of key notes.
Zyk float values for levels:
The table lists the float values needed for each level attainment in that attribute. Levels determine actual gameplay effects, they are only 1,2,3,4, or 5; the float values determine the 3D model look and are preserved and added to at each new song.
| Level | Float value needed |
|---|---|
| 0 | 0 |
| 1 | 1 |
| 2 | 3 |
| 3 | 6 |
| 4 | 10 |
| 5 | 15 |
Zyk real time transform
Analysis will occur on a 4 measure scale. Every 4 measures, the ratios and averages reset. The effect on the Zyk occurs via an increasing percent from 0 to 100 over the 4 measures. Thus, the Zyk's attributes at any one time are a result of the musical ratios up to that point, multiplied by the percentage completion of the 4 measures. These are reflected instantly in the physical representation (3D model). However, this requires having the "irritation" factor for when the person plays nothing for a long time… for example, maybe if nothing is played for a couple measures, increase the irritation factor.
Real time:Zyk traits = fudge factor * (percent complete * (musical ratios - irritation factor))
Final (after 4 measures): Zyk traits = traits before 4 measures + fudge factor * (musical ratios - irritation factor))
A danger of the the variety of ratios on our algorithms and the 1 minute song is that the player's input grows less and less impactful as he keeps on playing. Whereas the 10th note he plays was 1/10th of the total affect, and thus changes the Zyk a lot, the 100th note that he plays is only 1/100th of the total, and thus has a small effect on the appearance and stats of the Zyk.
Programming translation of music
attitude: requires simple bool
weight: requires cumulative ratio of chords vs notes
speed: requires cumulative ratio of different note lengths
sneak: requires cumulative ratio of periods without notes to periods with
ferocity: requires cumulative average of notes not in key (but how do we know key? - - The key should be something that the player selects, IE whatever the A-; row of the keyboard is. We'll map the key that they choose onto that row, which would mean that things on the q-p row are out of key)
toughness: requires keeping cumulative array of measures, checking for repetition in the measures with each new one —- this should be relatively easy with a good recursive function.
jump: requires cumulative ratio of notes above (baseNote + x) to total notes
dive: requires cumulative ratio of notes below (baseNote + y) to total notes
attack: requires cumulative average of interval between successive notes.
- but what if they play multiple notes per note spot?
- requires fields to hold previous note values to compare against
color: requires knowledge of key
Special:
Infinite flight: must check for arpeggios by comparing pitch of successive notes for going up or down
projectile rainbow/unlimited attack/ferocity: same as infinite flight
flower/unlimited sneak/speed: keep an array of "notes used" and check afterwards to see if only 5 notes appeared.
dragon scales/unlimited weight/toughness: check for a specific sequence of intervals (1,1,1,1,1,1 <—- hence the name 'whole tone scale', as opposed to an average scale which is 1,1,.5,1,1,1,.5.
Negative:
requires irritation float
Note duration: must keep track of successive number of sixteenth+ notes (sixteenth notes are okay, faster than that are not); reset when no sixteenth in a note spot
Chord density: check total number of notes at each spot
tritones: check for notes that are 6 half steps apart;
-requires that program be aware of all non-NoteOff paired notes (aka… all currently on notes)
-Actually, this should probably only check for ones played simultaneously. It doesn't sound quite as painful when they're played successfully. It can still sound like crap, but not as horrible of crap.
half-note intervals in chords: same as tritones





