Sonicviz
MooZk Feature Design
SonicViz
MooZk Feature Design
ã
Paul Cohen 2002
3/10 Hayward St • Paddington
Qld • 4064
Phone 07-38763426 • Email:
paulcohen@ozemail.com.au

Revision History
|
Document Version |
Date |
Revised By |
Revision Description |
Approved By |
|
1.0 |
18/08/02 |
Paul Cohen |
Initial Version |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Table
of Contents
|
Goal |
Sound
range exercise by working the sound spectrum |
||||||||
|
Level |
1.
Seascape. Music: ambient. |
||||||||
|
Scope |
Primary
solo task |
||||||||
|
Trigger |
Player
action by entry into bubble spout trigger radius |
||||||||
|
Primary Actors |
Player BubbleSpout |
||||||||
|
Secondary Actors |
Camera |
||||||||
|
Pre Conditions |
Player
has entered the bubble spout trigger radius |
||||||||
|
Success End Conditions |
|
||||||||
|
Failure End Conditions |
Does
not trigger Spotlight for illuminate Level1.2 terrain point. |
||||||||
|
Description |
Name: Work spectrum Purpose: Allow the player to explore their vocal range Users: Player Dependencies:
|
||||||||
|
|
|
|
Goal |
Sound
range exercise2 by working the sound spectrum |
||||||||
|
Level |
1.
Seascape. Music: ambient. |
||||||||
|
Scope |
Primary
solo task |
||||||||
|
Trigger |
Player
action by entry into “gardening” terrain point trigger radius |
||||||||
|
Primary Actors |
Player Plant,
Anemone, Lily, Geyser? |
||||||||
|
Secondary Actors |
Camera |
||||||||
|
Pre Conditions |
Player
has entered the “gardening” terrain point trigger radius |
||||||||
|
Success End Conditions |
|
||||||||
|
Failure End Conditions |
Does
not trigger Spotlight for illuminate Level1.3 terrain point. |
||||||||
|
Description |
Name: Work spectrum Purpose: Allow the player to explore their vocal range Users: Player Dependencies:
|
||||||||
|
|
|
|
Goal |
Note
recognition exercise |
||||||||
|
Level |
1.
Seascape. Music: ambient. |
||||||||
|
Scope |
Primary
solo task |
||||||||
|
Trigger |
Player
action by entry into “fish attraction point” trigger radius |
||||||||
|
Primary Actors |
Player Fish |
||||||||
|
Secondary Actors |
Camera |
||||||||
|
Pre Conditions |
Player
has entered the “fish attraction point” trigger radius |
||||||||
|
Success End Conditions |
|
||||||||
|
Failure End Conditions |
Does
not trigger Spotlight for illuminate Level2.1terrain point. |
||||||||
|
Description |
Name: Hit notes Purpose: Train player in hitting specific notes Users: Player Dependencies:
|
||||||||
|
|
|
|
Goal |
Simple
Melody recognition and repetition (Close Encounters “call and response”) |
||||||||
|
Level |
1.
Seascape. Music: Beat based dancable. |
||||||||
|
Scope |
Primary
task |
||||||||
|
Trigger |
Completion
of Level 1.3 introduces Koan controlled NPC |
||||||||
|
Primary Actors |
Player KoanNPC |
||||||||
|
Secondary Actors |
Camera |
||||||||
|
Pre Conditions |
Completion
of Level 1.3 |
||||||||
|
Success End Conditions |
|
||||||||
|
Failure End Conditions |
Does
not trigger UCLevel 3.1 actors Portal for entry to surface |
||||||||
|
Description |
Name: Simple Melody recognition Purpose: Pattern recognition and repetition Users: Player Dependencies:
|
||||||||
|
|
|
|
Goal |
None
– fade out. Performance twist by moving from underwater to Mexican mermaid
Sonora Desert Oasis myth. |
||||||||
|
Level |
3.
Desert oasis. Music: Melodic, Happy. |
||||||||
|
Scope |
Primary
task |
||||||||
|
Trigger |
Player
action by entry into portal to swim up |
||||||||
|
Primary Actors |
Player |
||||||||
|
Secondary Actors |
Camera |
||||||||
|
Pre Conditions |
Player
has completed Level 2.1 |
||||||||
|
Success End Conditions |
none |
||||||||
|
Failure End Conditions |
none |
||||||||
|
Description |
Name: End sequence Purpose: Impart a twist to the audience by playing on the mermaid myths Users: Player Dependencies:
|
||||||||
|
|
|
Describes
and numerates the issue/feature in question. The numerical index, established
in the TOC allows for easy finding and sorting once the project is underway.
1 Contact and "See Also" Information
Straightforward: Point of contact for who designed the feature and what other documents it relates to outside of this one.
2 Goals
A bullet list of associated goals including problems you may encounter implementing this feature and possible solutions to said problems.
3 Implementation
How you're going to affect the feature. This is where you'd include formula, diagrams, or flowcharts that layout the design feature in question that all relative parties may need to know/follow to get the feature up and rolling.
4 Impact
How this feature will impact the current status quo. You can't always crystal ball this, but in our case we're making changes to an existing engine/game, so some changes do affect the way we're currently implementing some features. An example of this would be having a new action for a wrestler to do, and needing a button-press to pull it off when we're already overloaded here. Another use for this heading is to help you identify extra resources you may need, and schedule relevant needs to bring the feature into line.
5 Tasks & Questions for:
5.1 Designers
5.2 Programmers
5.3 Artists
5.3.1 2D
5.3.2 Modelers
5.3.3 Motion
5.3.4 Sounds
/* Freq Bin: 0 =
86.132645 F->C->E
Freq Bin: 1 =
172.26529 F->B
Freq Bin: 2 =
258.39792 C->E
Freq Bin: 3 =
344.53058 F->G#
Freq Bin: 4 =
430.6632 A->B
Freq Bin: 5 =
516.79584 C->D
Freq Bin: 6 =
602.9285 D#,E
Freq Bin: 7 =
689.06116 F,F#
Freq Bin: 8 =
775.1938 G,G#
Freq Bin: 9 =
861.3264 A,A#
Freq Bin: 10 =
947.4591 B
Freq Bin: 11 =
1033.5917 C,C#
Freq Bin: 12 =
1119.7244 D
Freq Bin: 13 =
1205.857 D#
Freq Bin: 14 =
1291.9896 E
Freq Bin: 15 =
1378.1223 F
Freq Bin: 16 =
1464.255 F#
Freq Bin: 17 =
1550.3876 G
Freq Bin: 18 =
1636.5203 G#
Freq Bin: 19 =
1722.6528 A
Freq Bin: 20 =
1808.7855 A#
Freq Bin: 21 =
1894.9182 B
Freq Bin: 22 =
1981.0508
Freq Bin: 23 =
2067.1833 C
*/
String note =
"X";
switch
(maxIndex) {
case 2: //C
noteLabel.setText("C-D");
// set the label for the pitch
note
= "C";
a1.setPosition(
a1pos.x , a1pos.y + (maxVal/16) , a1pos.z);
m2.setPosition(
m2pos.x, m2pos.y + (maxVal/16) , m2pos.z);
a2.setPosition(
a2pos.x , a2pos.y + (maxVal/16) , a2pos.z);
break;
case 3:
noteLabel.setText("D#-E");//
set the label for the pitch
note
= "D#";
m3.setPosition(
m3pos.x , m3pos.y + (maxVal/16) , m3pos.z);
a3.setPosition(
a3pos.x , a3pos.y + (maxVal/16) , a3pos.z);
break;
case 4:
noteLabel.setText("F-G#");
// set the label for the pitch
note
= "F";
a4.setPosition(
a4pos.x , a4pos.y + (maxVal/16) , a4pos.z);
m5.setPosition(
m5pos.x , m5pos.y + (maxVal/16) , m5pos.z);
a5.setPosition(
a5pos.x , a5pos.y + (maxVal/16) , a5pos.z);
p6.setPosition(
p6pos.x , p6pos.y + (maxVal/16) , p6pos.z);
break;
case 5:
noteLabel.setText("A-B");
// set the label for the pitch
note
= "A";
a6.setPosition(
a6pos.x , a6pos.y + (maxVal/16) , a6pos.z);
f7.setPosition(
f7pos.x , f7pos.y + (maxVal/16) , f7pos.z);
a7.setPosition(
a7pos.x , a7pos.y + (maxVal/16) , a7pos.z);
break;
case 6: //C
noteLabel.setText("C-D");
// set the label for the pitch
note
= "C";
a1.setPosition(
a1pos.x , a1pos.y + (maxVal/16) , a1pos.z);
m2.setPosition(
m2pos.x, m2pos.y + (maxVal/16) , m2pos.z);
a2.setPosition(
a2pos.x , a2pos.y + (maxVal/16) , a2pos.z);
break;
case 7:
noteLabel.setText("D#-F");
// set the label for the pitch
note
= "D#";
m3.setPosition(
m3pos.x , m3pos.y + (maxVal/16) , m3pos.z);
a3.setPosition(
a3pos.x , a3pos.y + (maxVal/16) , a3pos.z);
a4.setPosition(
a4pos.x , a4pos.y + (maxVal/16) , a4pos.z);
break;
case 8:
noteLabel.setText("F#-G");
// set the label for the pitch
note
= "F#";
m5.setPosition(
m5pos.x , m5pos.y + (maxVal/16) , m5pos.z);
a5.setPosition(
a5pos.x , a5pos.y + (maxVal/16) , a5pos.z);
break;
case 9:
noteLabel.setText("G#-A");
// set the label for the pitch
note
= "G#";
p6.setPosition(
p6pos.x , p6pos.y + (maxVal/16) , p6pos.z);
a6.setPosition(
a6pos.x , a6pos.y + (maxVal/16) , a6pos.z);
break;
case
10:
noteLabel.setText("A#-B");
// set the label for the pitch
note
= "A#";
f7.setPosition(
f7pos.x , f7pos.y + (maxVal/16) , f7pos.z);
a7.setPosition(
a7pos.x , a7pos.y + (maxVal/16) , a7pos.z);
break;
case 11: //C
noteLabel.setText("C");
// set the label for the pitch
note
= "C";
a1.setPosition(
a1pos.x , a1pos.y + (maxVal/16) , a1pos.z);
break;
case 12: // C#
noteLabel.setText("C#");
// set the label for the pitch
note
= "C#";
m2.setPosition(
m2pos.x, m2pos.y + (maxVal/16) , m2pos.z);
break;
case 13:
noteLabel.setText("D-D#");
// set the label for the pitch
note
= "D";
a2.setPosition(
a2pos.x , a2pos.y + (maxVal/16) , a2pos.z);
m3.setPosition(
m3pos.x , m3pos.y + (maxVal/16) , m3pos.z);
break;
case 14:
noteLabel.setText("E");
// set the label for the pitch
note
= "E";
a3.setPosition(
a3pos.x , a3pos.y + (maxVal/16) , a3pos.z);
break;
case 15:
noteLabel.setText("F");
// set the label for the pitch
note
= "F";
a4.setPosition(
a4pos.x , a4pos.y + (maxVal/16) , a4pos.z);
break;
case 16:
noteLabel.setText("F#");
// set the label for the pitch
note
= "F#";
m5.setPosition(
m5pos.x , m5pos.y + (maxVal/16) , m5pos.z);
break;
case 17:
noteLabel.setText("G");
// set the label for the pitch
note
= "G";
a5.setPosition(
a5pos.x , a5pos.y + (maxVal/16) , a5pos.z);
break;
case 18:
noteLabel.setText("G#");
// set the label for the pitch
note
= "G#";
p6.setPosition(
p6pos.x , p6pos.y + (maxVal/16) , p6pos.z);
break;
case 19:
noteLabel.setText("A");
// set the label for the pitch
note
= "A";
a6.setPosition(
a6pos.x , a6pos.y + (maxVal/16) , a6pos.z);
break;
case 21:
noteLabel.setText("A#");
// set the label for the pitch
note
= "A#";
f7.setPosition(
f7pos.x , f7pos.y + (maxVal/16) , f7pos.z);
break;
case 22:
noteLabel.setText("B");
// set the label for the pitch
note
= "B";
a7.setPosition(
a7pos.x , a7pos.y + (maxVal/16) , a7pos.z);
break;
case 23:
noteLabel.setText("C");
// set the label for the pitch
note
= "C";
a1.setPosition(
a1pos.x , a1pos.y + (maxVal/16) , a1pos.z);
break;
case 24: // C#
noteLabel.setText("C/C#");
// set the label for the pitch
note
= "C#";
m2.setPosition(
m2pos.x, m2pos.y + (maxVal/16) , m2pos.z);
break;
default:
noteLabel.setText("X");
note
= "X";
a1.setPosition(
a1pos.x , a1pos.y , a1pos.z);
m2.setPosition(
m2pos.x , m2pos.y , m2pos.z);
a2.setPosition(
a2pos.x , a2pos.y , a2pos.z);
m3.setPosition(
m3pos.x , m3pos.y , m3pos.z);
a3.setPosition(
a3pos.x , a3pos.y , a3pos.z);
a4.setPosition(
a4pos.x , a4pos.y , a4pos.z);
m5.setPosition(
m5pos.x , m5pos.y , m5pos.z);
a5.setPosition(
a5pos.x , a5pos.y , a5pos.z);
p6.setPosition(
p6pos.x , p6pos.y , p6pos.z);
a6.setPosition(
a6pos.x , a6pos.y , a6pos.z);
f7.setPosition(
f7pos.x , f7pos.y , f7pos.z);
a7.setPosition(
a7pos.x , a7pos.y , a7pos.z);
break;
}