File size: 10,594 Bytes
e92b445
b4e6ace
 
 
 
 
 
 
 
 
e92b445
 
 
 
 
 
 
 
 
 
 
b4e6ace
e92b445
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b4e6ace
e92b445
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
af2ea84
e92b445
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
import gradio as gr
import spaces


@spaces.GPU
def _warmup():
    # Placeholder so the Space is recognized as a ZeroGPU task.
    # This portfolio page is display-only and does not really use the GPU.
    return "ok"


A = "assets/"

# Each work is an ordered list of blocks rendered top-to-bottom.
# Block types: ("md", text) | ("img", [paths]) | ("video", path)

GRIS = [
    ("md",
     "# Gris\n"
     "**Role:** Sound design · Sound synthesis · Composition · Music editing  \n"
     "**Software:** Ableton Live, Pro Tools"),
    ("video", "gris.mp4"),
    ("md",
     "### Game & chapter overview\n"
     "*Gris* is a platform-adventure game. It follows a girl named Gris who wakes before a "
     "crumbling statue of a woman. She tries to sing but soon chokes up; the statue's hand "
     "falls apart, dropping her to the colorless land below. After landing, she keeps moving "
     "forward, meeting strange structures that seem to be powered by mysterious, star-like "
     "points of light. She can collect these lights to gain new abilities — such as turning "
     "into stone, or creating new constellation-like paths."),
    ("md", "### Opening cinematic — style design"),
    ("img", [A + "gris_1.png"]),
    ("md",
     "The opening cinematic uses a synth-piano timbre from Live. This timbre gives a sense of "
     "memory, drawing the listener into the world that follows. Compositionally it uses "
     "continuous, slightly irregular rhythms with a highly repetitive melody — light and "
     "dreamlike, tinged with a touch of melancholy."),
    ("md",
     "### Chapter 2 — Anger\n"
     "The second chapter, *Anger*, is one of the emotional climaxes of the story. Tempered by "
     "repeated sandstorms, the girl gradually grows stronger and bravely faces the challenges "
     "ahead."),
    ("img", [A + "gris_2.png", A + "gris_3.png"]),
    ("md",
     "**Visual style analysis:** The visuals are dreamy and beautiful, with fairly soft "
     "colors. Chapter 2's main tone is red, adding an atmosphere of struggle and tension. Most "
     "of the time the camera sits far from the scene. The most striking shift comes as the "
     "sandstorm arrives: red smoke-clouds engulf the whole scene and visibility drops rapidly."),
    ("md",
     "**Sound style design:** The overall design holds to a *\"simple but not simplistic\"* "
     "style — it must neither break the quiet, harmonious atmosphere nor lack detail and feel "
     "crude. This remake carries more contrast than the original. In everyday traversal the "
     "style is gentler and more dreamlike, while at moments of growth — the sandstorm, or "
     "obtaining the \"box\" ability — it becomes more deeply affecting.\n\n"
     "**(1) Footsteps:** Must suit different materials. Loudness fairly low, mid and high "
     "frequencies attenuated, reverb and delay added as appropriate to match the open, distant "
     "visuals. Indoor and outdoor handling differ — indoor footsteps slightly more prominent.\n\n"
     "**(2) Ambience:** Subtle point sources woven in, such as the fine friction of sand or "
     "tiny rock/metal drops (depending on the environment). In the temple, low frequencies are "
     "moderately boosted, and point sources shift accordingly — for example bell sounds that "
     "move continuously with the player's position.\n\n"
     "**(3) Effects:** Mainly synthesis-based. Because effect sounds are often tied to "
     "\"achievement,\" they need a clear sense of positive feedback, with chorus added to "
     "create a feeling of holiness.\n\n"
     "**\\* Sandstorm:** A clear \"negative-feedback\" effect, mainly synthesis-based, richly "
     "layered — randomly synthesized notes (mimicking the texture of sand) and extremely "
     "low-frequency wind. A whisper element is inserted, like the low murmur of a demon.\n\n"
     "*Keywords: brave, vast, contrast, quiet, dreamlike, beautiful, sacred.*"),
    ("md",
     "### Depression (Chapter 4)\n"
     "*Depression* is the fourth chapter of *Gris*. Its theme color is blue, symbolizing the "
     "saddest stage. In the first half the player collects stars; after gathering six, they "
     "place them into a shell — which is actually a sea turtle, now revived. The turtle dives "
     "into the dim abyss, and the light it emits becomes a guide for the player to follow. The "
     "player then falls into the plight of being chased by an eel; after the chase they quickly "
     "ascend and swim away, and are finally rescued by the turtle, swimming toward a new area — "
     "a storyline that pushes the emotion to its climax."),
    ("img", [A + "gris_4.png"]),
    ("md",
     "**Visual style analysis:** The overall palette is dark, and brightness varies markedly "
     "with water depth. Faint light sources dot the scene, like starlight. When rescued by the "
     "turtle, the palette turns dreamlike, and the scene shifts to an open area full of glowing "
     "jellyfish."),
    ("md",
     "**Sound style design:** This section draws on ambient-music composition, using "
     "synthesizers to build multiple atmospheric layers. As the visual colors shift between "
     "light and dark, the number of layers rises or falls, giving a distinctly varied "
     "experience. The darker the scene, the more low frequency, and the more pronounced the "
     "dissonant, conflicting, ominous atmosphere; effects and timbres lean unreal and surreal.\n\n"
     "The lighting's sound design is gentler, like twinkling starlight, forming a clear "
     "contrast with the background. The turtle's appearance is where emotion erupts — but not "
     "too violently; instead the sound's mass gently expands, giving a feeling of \"sudden "
     "clarity.\" Jellyfish and bubbles have a wide sound field with delay processing, and "
     "major-key chords with an orchestral-like timbre add drama and grandeur.\n\n"
     "For the eel, the focus is the \"bite\" — the very source of conflict in the story. The "
     "eel is moderate in size but still threatening, sitting in a vast body of water, so its "
     "sound is given large reverb with appropriately boosted low frequencies."),
]

VALLEY = [
    ("md",
     "# The Valley of Ancient\n"
     "**Role:** Sound design · Sound synthesis · Wwise engineering · Part of the UE5 audio "
     "hookup  \n"
     "**Software:** Reaper, Ableton Live, Unreal Engine 5, Wwise"),
    ("video", "thevalleyofancient-002.mp4"),
    ("md", "## 1. Style design\n\n**Visual style:**"),
    ("img", [A + "valley_1.png", A + "valley_2.png"]),
    ("md",
     "The visuals split into two parts: before entering the portal, an ordinary valley scene; "
     "after entering, a dark \"Dark World\" scene. The visuals are grounded in an ancient "
     "valley with an epic, grand style, but most elements are real — only the Boss is entirely "
     "fictional. The player's ultimate mission is to overthrow the Boss, which is enormous, "
     "with red light glowing from its head and an explosive effect."),
    ("md",
     "**Sound style design:** The style should be realistic overall, adding non-realistic "
     "elements only when the story reaches specific states. Narratively, the sound should "
     "convey danger, drawing the player to immerse in this perilous environment; and since the "
     "setting is \"ancient,\" it should evoke a fairly primal atmosphere. The Boss is large "
     "with a hard body, so combat sound needs a clear sense of impact, forming a sharp "
     "contrast with the player. At the key moments of the Boss's appearance and defeat, "
     "synthesis-based ambient sounds are added to stir emotion and underscore the Boss's "
     "identity.\n\n"
     "*Time & place:* an ancient valley, fairly dry and lifeless.  \n"
     "*Emotion:* shrouded in crisis — fear alongside a firm resolve to complete the mission.  \n"
     "*Off-screen & living elements:* creatures suited to an \"ancient valley\" scene.\n\n"
     "**Sound interaction design:** When the Boss uses its fire-breathing skill, the position "
     "of the fire sound shifts accordingly as the player runs."),
    ("md",
     "## 2. Sound presentation & specifications\n\n"
     "**Sound field:** The target platform is a home-PC playback system, so only a stereo "
     "field is considered.\n\n"
     "**Ambience:**\n"
     "- *Background (BG):* fairly wide; reserves the two sides and the center of the field for "
     "3D sounds, limiting width and controlling Center.\n"
     "- *Ordinary 3D point sources:* appear in the mid/back ground, avoiding the center and "
     "both ends.\n"
     "- *Special 3D point sources:* appear at both ends of the field, with a certain height "
     "setting.\n\n"
     "**Skill & motion sounds:** mostly at the center of the field; some special effects (such "
     "as the fire-breath) change with the player's position.\n\n"
     "**Frequency response:**\n"
     "- *Ambience:* to preserve the impact of key skills, low-cut below 63Hz. The Dark World "
     "background sits around 125Hz; the ordinary environment around 200Hz. Point sources are "
     "more flexible, mainly mid-high above 500Hz, some reaching 3–5kHz.\n"
     "- *Footsteps:* characteristic band around 500Hz.\n"
     "- *Skill sounds:* wide bandwidth, emphasizing roughly 50–300Hz to strengthen impact.\n\n"
     "**Dynamic mixing:** In the two key animations — the Boss's entrance and defeat — "
     "sidechain compression is applied. As the scene switches to the dark world, the bands of "
     "wind and creature sounds descend to a degree."),
   
    ("img", [A + "valley_3.jpg", A + "valley_4.jpg", A + "valley_5.png"]),
]


def render(blocks):
    for kind, payload in blocks:
        if kind == "md":
            gr.Markdown(payload)
        elif kind == "video":
            gr.Video(payload, show_label=False)
        elif kind == "img":
            if len(payload) == 1:
                gr.Image(payload[0], show_label=False)
            else:
                gr.Gallery(payload, show_label=False, columns=len(payload),
                           height="auto", object_fit="contain")


with gr.Blocks(title="Sound Design Portfolio") as demo:
    gr.Markdown("# 🎧 Sound Design Portfolio\nTwo game sound-design projects — full design "
                "documents with the original visuals.")
    with gr.Tabs():
        with gr.Tab("Gris"):
            render(GRIS)
        with gr.Tab("The Valley of Ancient"):
            render(VALLEY)

if __name__ == "__main__":
    demo.launch(theme=gr.themes.Soft())