import {
clearVideo,
clearStill,
defineVQTimeline,
say,
standeePosition,
still,
video,
wait,
type VQSpeechEvent,
type VQTimelineEvent,
type VQTimelineInputEvent,
} from "../../lib/VQRemotionLib/timeline";
import type {CharacterId, VoicevoxVoice} from "./characters";
export {characters} from "./characters";
export type {CharacterDefinition, CharacterId, VoicevoxVoice} from "./characters";
export type SpeechEvent = VQSpeechEvent<CharacterId, VoicevoxVoice>;
export type TimelineEvent = VQTimelineEvent<CharacterId, VoicevoxVoice>;
export type TimelineInputEvent = VQTimelineInputEvent<
CharacterId,
VoicevoxVoice
>;
export const timeline = defineVQTimeline([
say("pizza-oven-project-01-sayo-001", "sayo", "こんにちは。小夜です。"),
say("pizza-oven-project-01-sayo-002", "sayo", "ピザって美味しいじゃないですか。"),
say("pizza-oven-project-01-sayo-003", "sayo", "だから、作る事にしたんですよね。"),
standeePosition("pizza-oven-project-01-sayo-position-001", "sayo", "corner"),
still(
"pizza-oven-project-01-oven-still-001",
"image/still/blender-oven-still01.png",
{
durationSeconds: 1.0,
fit: "cover",
}
),
say("pizza-oven-project-01-sayo-004", "sayo", "ピザ窯を。", {
readAs: "ぴざがまを。",
}),
wait(0.5),
say("pizza-oven-project-01-sayo-005", "sayo", "まずはblender上で、耐熱レンガの寸法を元に積み方を設計することにしました。"),
say("pizza-oven-project-01-sayo-006", "sayo", "使うレンガの数がこれでわかります。"),
say("pizza-oven-project-01-sayo-007", "sayo", "通常サイズのレンガが91個、\n半分にしたレンガが8個必要ですね。"),
say("pizza-oven-project-01-sayo-008", "sayo", "レンガを割って半分にするので、合計95個の耐熱レンガを買うことにしました。"),
clearStill("pizza-oven-project-01-clear-still-001"),
standeePosition("pizza-oven-project-01-sayo-position-002", "sayo", "stage"),
say("pizza-oven-project-01-sayo-009", "sayo", "次に、レンガを積む土台を作ります。"),
say("pizza-oven-project-01-sayo-010", "sayo", "ホームセンターで、コンクリートブロックを8個買ってきました。"),
standeePosition("pizza-oven-project-01-sayo-position-003", "sayo", "corner"),
still(
"pizza-oven-project-01-block-still-001",
"image/still/oven-base-block.jpg",
{
durationSeconds: 0.1,
fit: "cover",
}
),
say("pizza-oven-project-01-sayo-011", "sayo", "これを平らに固めた地面に置いて、その上にレンガを積んでいきます。"),
say("pizza-oven-project-01-sayo-012", "sayo", "後は設計図通りに…… 3.5kg×95個の耐熱レンガを積んでいくだけですね。"),
say("pizza-oven-project-01-sayo-013", "sayo", "……合計332.5kgですね。"),
say("pizza-oven-project-01-sayo-014", "sayo", "かなり重かったので運ぶのは大変でしたが、\nなんとかしました。"),
still(
"pizza-oven-project-01-stacked-block-still-001",
"image/still/oven-dev01.jpg",
{
durationSeconds: 0.5,
fit: "cover",
}
),
say("pizza-oven-project-01-sayo-015", "sayo", "設計に従ってレンガを積み上げていきます。"),
video("pizza-oven-project-01-stacking-bricks-video-001", "image/video/block-dev.mp4", {
placement: "background",
playback: "once",
durationSeconds: 15.0,
muted: true,
fit: "cover",
zIndex: 1,
}),
say("pizza-oven-project-01-sayo-016", "sayo", "焼成室の床部分ではレンガを浮かせる必要があるため、L字鉄アングルを使って支えます。"),
wait(2.0),
video("pizza-oven-project-01-cutting-steel-video-001", "image/video/cutting-steel01.mp4", {
placement: "background",
playback: "once",
durationSeconds: 27.111,
muted: false,
volume: 0.1,
fit: "cover",
zIndex: 1,
}),
clearStill("pizza-oven-project-01-clear-still-002"),
say("pizza-oven-project-01-sayo-017", "sayo", "長めのL字鉄アングルを買ってきたので、\n窯の幅に合わせて切断して使います。"),
say("pizza-oven-project-01-sayo-018", "sayo", "金属用のディスクグラインダーを使って切りましょうね。"),
say("pizza-oven-project-01-sayo-019", "sayo", "焼成室の床、天井を支えるためには9本のL字鉄アングルが必要でした。"),
say("pizza-oven-project-01-sayo-020", "sayo", "切断したら、続きを積み上げて行きましょう。"),
clearVideo(
"pizza-oven-project-01-clear-cutting-steel-video-001",
"pizza-oven-project-01-cutting-steel-video-001"
),
standeePosition("pizza-oven-project-01-sayo-position-005", "sayo", "corner"),
still(
"pizza-oven-project-01-stacked-block-still-002",
"image/still/oven-dev02.jpg",
{
durationSeconds: 0.5,
fit: "cover",
}
),
say("pizza-oven-project-01-sayo-021", "sayo", "積みました。"),
say("pizza-oven-project-01-sayo-022", "sayo", "ひとまずは窯の形になりましたね。\nピザが近づいてきた気配がします。"),
// firewood01.jpgを表示
still(
"pizza-oven-project-01-firewood-still-001",
"image/still/firewood01.jpg",
{
durationSeconds: 0.5,
fit: "cover",
}),
say("pizza-oven-project-01-sayo-023", "sayo", "早速試験運転してみようと思います。"),
say("pizza-oven-project-01-sayo-024", "sayo", "燃料は薪です。\n今後のため肉焼き用の炭も用意してあります。",
{readAs: "ねんりょうはまきです。こんごのため、にくやきようのすみもよういしてあります。"}
),
// firewood02.jpgを表示
still(
"pizza-oven-project-01-firewood-still-002",
"image/still/firewood02.jpg",
{
durationSeconds: 0.5,
fit: "cover",
}),
say("pizza-oven-project-01-sayo-025", "sayo", "焚き付け用に細い薪もありますよ。",
{readAs: "たきつけようにほそいまきもありますよ。"}
),
// firewood03.jpgを表示
still(
"pizza-oven-project-01-firewood-still-003",
"image/still/firewood03.jpg",
{
durationSeconds: 0.5,
fit: "cover",
}),
say("pizza-oven-project-01-sayo-026", "sayo", "早速薪を組み上げて……",
{readAs: "さっそくまきをくみあげて……"}
),
// firewood04.jpgを表示
still(
"pizza-oven-project-01-firewood-still-004",
"image/still/firewood04.jpg",
{
durationSeconds: 0.5,
fit: "cover",
}),
say("pizza-oven-project-01-sayo-027", "sayo", "着火!"),
say("pizza-oven-project-01-sayo-028", "sayo", "火がつきました!\nこのまましばらく燃やして、窯を温めていきます。"),
// running01.jpgを表示
still(
"pizza-oven-project-01-running-still-001",
"image/still/running01.jpg",
{
durationSeconds: 0.5,
fit: "cover",
}),
say("pizza-oven-project-01-sayo-029", "sayo", "いい感じに温まりましたね。"),
say("pizza-oven-project-01-sayo-030", "sayo", "今回はまだピザ生地を用意していないので、試験運転にはソーセージを焼いてみます。"),
say("pizza-oven-project-01-sayo-031", "sayo", "結果は、大成功!スモーキーな香りがついて、とても美味しく焼けました。"),
// stillを消して、小夜を真ん中に戻す
clearStill("pizza-oven-project-01-clear-still-003"),
standeePosition("pizza-oven-project-01-sayo-position-006", "sayo", "stage"),
say("pizza-oven-project-01-sayo-032", "sayo", "次回はピザ生地を用意して、ピザを焼いてみたいと思います!"),
say("pizza-oven-project-01-sayo-033", "sayo", "今後、石窯のアップデートや料理の様子をお届けする予定です。"),
say("pizza-oven-project-01-sayo-034", "sayo", "お楽しみに!"),
] satisfies readonly TimelineInputEvent[]);