mulmocast 1.1.4 → 1.1.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/lib/actions/audio.d.ts +0 -1
  2. package/lib/actions/audio.js +18 -13
  3. package/lib/actions/image_agents.d.ts +3 -12
  4. package/lib/actions/image_agents.js +12 -8
  5. package/lib/actions/images.js +3 -1
  6. package/lib/actions/movie.js +1 -3
  7. package/lib/actions/translate.js +13 -31
  8. package/lib/agents/image_openai_agent.js +4 -1
  9. package/lib/agents/lipsync_replicate_agent.js +10 -3
  10. package/lib/cli/commands/audio/handler.js +1 -1
  11. package/lib/cli/commands/image/handler.js +1 -1
  12. package/lib/cli/commands/movie/handler.js +1 -1
  13. package/lib/cli/commands/pdf/handler.js +1 -1
  14. package/lib/cli/helpers.d.ts +1 -4
  15. package/lib/cli/helpers.js +3 -2
  16. package/lib/mcp/server.js +1 -1
  17. package/lib/methods/mulmo_presentation_style.d.ts +5 -5
  18. package/lib/methods/mulmo_presentation_style.js +14 -8
  19. package/lib/methods/mulmo_script.js +4 -1
  20. package/lib/methods/mulmo_studio_context.d.ts +1 -0
  21. package/lib/methods/mulmo_studio_context.js +8 -0
  22. package/lib/types/agent.d.ts +4 -0
  23. package/lib/types/schema.d.ts +712 -8
  24. package/lib/types/schema.js +6 -2
  25. package/lib/types/type.d.ts +1 -1
  26. package/lib/utils/const.js +1 -1
  27. package/lib/utils/context.d.ts +401 -34
  28. package/lib/utils/context.js +95 -56
  29. package/lib/utils/file.d.ts +1 -1
  30. package/lib/utils/file.js +5 -2
  31. package/lib/utils/filters.d.ts +1 -0
  32. package/lib/utils/filters.js +8 -0
  33. package/lib/utils/preprocess.d.ts +15 -2
  34. package/lib/utils/preprocess.js +3 -3
  35. package/lib/utils/provider2agent.d.ts +3 -2
  36. package/lib/utils/provider2agent.js +20 -2
  37. package/lib/utils/string.d.ts +1 -1
  38. package/lib/utils/string.js +11 -8
  39. package/package.json +2 -1
  40. package/scripts/templates/image_refs.json +1 -0
  41. package/scripts/templates/voice_over.json +1 -0
  42. package/scripts/test/gpt.json +33 -0
  43. package/scripts/test/mulmo_story.json +11 -0
  44. package/scripts/test/test.json +64 -0
  45. package/scripts/test/test1.json +41 -0
  46. package/scripts/test/test2.json +66 -0
  47. package/scripts/test/test_audio.json +152 -0
  48. package/scripts/test/test_audio_instructions.json +70 -0
  49. package/scripts/test/test_beats.json +59 -0
  50. package/scripts/test/test_captions.json +53 -0
  51. package/scripts/test/test_elevenlabs_models.json +194 -0
  52. package/scripts/test/test_en.json +29 -0
  53. package/scripts/test/test_hello.json +18 -0
  54. package/scripts/test/test_hello_google.json +26 -0
  55. package/scripts/test/test_html.json +67 -0
  56. package/scripts/test/test_image_refs.json +50 -0
  57. package/scripts/test/test_images.json +49 -0
  58. package/scripts/test/test_lang.json +87 -0
  59. package/scripts/test/test_layout.json +153 -0
  60. package/scripts/test/test_lipsync.json +62 -0
  61. package/scripts/test/test_loop.json +35 -0
  62. package/scripts/test/test_media.json +245 -0
  63. package/scripts/test/test_mixed_providers.json +92 -0
  64. package/scripts/test/test_movie.json +40 -0
  65. package/scripts/test/test_no_audio.json +253 -0
  66. package/scripts/test/test_no_audio_with_credit.json +254 -0
  67. package/scripts/test/test_order.json +69 -0
  68. package/scripts/test/test_order_portrait.json +73 -0
  69. package/scripts/test/test_replicate.json +145 -0
  70. package/scripts/test/test_slideout_left_no_audio.json +46 -0
  71. package/scripts/test/test_sound_effect.json +41 -0
  72. package/scripts/test/test_spillover.json +117 -0
  73. package/scripts/test/test_transition.json +56 -0
  74. package/scripts/test/test_transition_no_audio.json +46 -0
  75. package/scripts/test/test_video_speed.json +81 -0
  76. package/scripts/test/test_voice_over.json +105 -0
  77. package/scripts/test/test_voices.json +55 -0
@@ -0,0 +1,69 @@
1
+ {
2
+ "$mulmocast": { "version": "1.1" },
3
+ "lang": "en",
4
+ "beats": [
5
+ {
6
+ "text": "The number 1 stands alone—independent, bold, and often lonely. In stories, the lone hero begins their journey without companions, carving their path through courage. Think of Neo in The Matrix, 'The One', chosen to awaken humanity. Or the number 1 in binary—on or off, light or dark. It reminds us that every great movement starts with a single step, a single decision. Just one person can spark a revolution or change history. As Lao Tzu said, 'The journey of a thousand miles begins with one step.'",
7
+ "image": {
8
+ "type": "markdown",
9
+ "markdown": ["# 1", "# one"]
10
+ }
11
+ },
12
+ {
13
+ "text": "Two is the number of connection. In myth, it's often the number of lovers, twins, or duels. Adam and Eve, Sun and Moon, Sherlock and Watson. It's the smallest number that introduces the concept of 'the other'. In quantum physics, entangled particles influence each other instantly, no matter the distance. In life, two minds can spark ideas one alone could never imagine. 'It takes two to tango' is more than a dance—it's a truth about collaboration and tension, the dance of opposites that moves the world forward.",
14
+ "image": {
15
+ "type": "markdown",
16
+ "markdown": ["# 2", "# two"]
17
+ }
18
+ },
19
+ {
20
+ "text": "Three is the storyteller’s favorite. Three acts, three trials, three wishes—our minds love the rhythm. In fairy tales, the youngest of three siblings often prevails, defying expectations. Christianity has the Holy Trinity. In time, we speak of past, present, and future. Philosophers speak of thesis, antithesis, and synthesis. There’s something satisfying about the triangle: it’s stable, dynamic, and complete. As the saying goes, 'Third time’s the charm.' It’s as if the universe speaks in triplets, offering clarity where one or two might falter.",
21
+ "image": {
22
+ "type": "markdown",
23
+ "markdown": ["# 3", "# three"]
24
+ }
25
+ },
26
+ {
27
+ "text": "Four is a number of structure. We see it in the four cardinal directions—north, south, east, and west—framing our understanding of space. Ancient elements often came in fours: earth, water, air, and fire. In East Asia, four can be ominous, sounding like 'death' in some languages. Yet in many traditions, four symbolizes balance. A chair stands on four legs. The year cycles through four seasons. Jung described four functions of consciousness—thinking, feeling, sensing, and intuiting. It’s a square, solid and grounding.",
28
+ "image": {
29
+ "type": "markdown",
30
+ "markdown": ["# 4", "# four"]
31
+ }
32
+ },
33
+ {
34
+ "text": "「5」は、私たちが世界に触れる方法です。片手に5本の指、片足に5本の足指を持ち、私たちは世界を探り、築き、動きます。私たちは、視覚・聴覚・嗅覚・味覚・触覚という5つの感覚を通じて人生を体験します。日本の哲学では「五大」として、地・水・火・風・空の5つの要素が存在します。西洋では、五芒星(ペンタグラム)がバランスや守護の象徴として用いられてきました。それは両手両足を広げた人の姿にも見えます。\n「5」という数字は、私たち人間の経験そのもの――好奇心、感覚、そして意味を求めて生きる姿を映し出しています。",
35
+ "image": {
36
+ "type": "markdown",
37
+ "markdown": ["# 5", "# five"]
38
+ }
39
+ },
40
+ {
41
+ "text": "Six is often seen as a number of harmony and order. In geometry, the hexagon is one of the most efficient and natural forms—think honeycombs or snowflakes. In Christianity, God created the world in six days. In music, a sixth interval is sweet and stable. In chemistry, carbon has six protons—this one element is the foundation of all life. In dice, six is the highest you can roll, often bringing fortune. And in ancient numerology, six represented responsibility and care—it's the number of the caregiver and the homebuilder.",
42
+ "image": {
43
+ "type": "markdown",
44
+ "markdown": ["# 6", "# six"]
45
+ }
46
+ },
47
+ {
48
+ "text": "Seven is a number shrouded in mystery. There are seven colors in the rainbow, seven days in a week, seven continents, and seven wonders of the ancient world. In literature, it's often a sacred or magical number—Harry Potter had seven horcruxes, Snow White had seven dwarves. In many religions, seven is divine: the seventh heaven, the seven chakras, the seven deadly sins. Mathematically, it’s a prime—indivisible, unique. It’s said that humans can best remember seven things at once. Something about it just feels… complete.",
49
+ "image": {
50
+ "type": "markdown",
51
+ "markdown": ["# 7", "# seven"]
52
+ }
53
+ },
54
+ {
55
+ "text": "Eight is a number of abundance and eternity. Turned on its side, it becomes the infinity symbol. In Chinese culture, 8 is extremely lucky, sounding like wealth or fortune. The Olympics in Beijing began on 8/8/08 at 8:08:08 PM for this reason. In Buddhism, the Eightfold Path outlines the steps toward enlightenment. Spiders have eight legs—symbols of patience and precision. Even in music, an octave spans eight notes. It’s the number of cycles, rebirths, and limitless potential—forever looping like a serpent eating its tail.",
56
+ "image": {
57
+ "type": "markdown",
58
+ "markdown": ["# 8", "# eight"]
59
+ }
60
+ },
61
+ {
62
+ "text": "Nine signals the end of a cycle. In pregnancy, it marks the final month before birth. In Norse mythology, there are nine worlds. In Dante’s Inferno, nine circles define Hell. Cats are said to have nine lives—resilient and mysterious. In Japanese culture, the number can be unlucky, associated with suffering. But it’s also powerful: the last single-digit number, composed of three threes. In mathematics, multiplying nine always returns to itself—18 becomes 1+8=9. It's the threshold, the peak before transformation begins again.",
63
+ "image": {
64
+ "type": "markdown",
65
+ "markdown": ["# 9", "# nine"]
66
+ }
67
+ }
68
+ ]
69
+ }
@@ -0,0 +1,73 @@
1
+ {
2
+ "$mulmocast": { "version": "1.1" },
3
+ "lang": "en",
4
+ "canvasSize": {
5
+ "width": 720,
6
+ "height": 1280
7
+ },
8
+ "beats": [
9
+ {
10
+ "text": "The number 1 stands alone—independent, bold, and often lonely. In stories, the lone hero begins their journey without companions, carving their path through courage. Think of Neo in The Matrix, 'The One', chosen to awaken humanity. Or the number 1 in binary—on or off, light or dark. It reminds us that every great movement starts with a single step, a single decision. Just one person can spark a revolution or change history. As Lao Tzu said, 'The journey of a thousand miles begins with one step.'",
11
+ "image": {
12
+ "type": "markdown",
13
+ "markdown": ["# 1", "# one"]
14
+ }
15
+ },
16
+ {
17
+ "text": "Two is the number of connection. In myth, it's often the number of lovers, twins, or duels. Adam and Eve, Sun and Moon, Sherlock and Watson. It's the smallest number that introduces the concept of 'the other'. In quantum physics, entangled particles influence each other instantly, no matter the distance. In life, two minds can spark ideas one alone could never imagine. 'It takes two to tango' is more than a dance—it's a truth about collaboration and tension, the dance of opposites that moves the world forward.",
18
+ "image": {
19
+ "type": "markdown",
20
+ "markdown": ["# 2", "# two"]
21
+ }
22
+ },
23
+ {
24
+ "text": "Three is the storyteller’s favorite. Three acts, three trials, three wishes—our minds love the rhythm. In fairy tales, the youngest of three siblings often prevails, defying expectations. Christianity has the Holy Trinity. In time, we speak of past, present, and future. Philosophers speak of thesis, antithesis, and synthesis. There’s something satisfying about the triangle: it’s stable, dynamic, and complete. As the saying goes, 'Third time’s the charm.' It’s as if the universe speaks in triplets, offering clarity where one or two might falter.",
25
+ "image": {
26
+ "type": "markdown",
27
+ "markdown": ["# 3", "# three"]
28
+ }
29
+ },
30
+ {
31
+ "text": "Four is a number of structure. We see it in the four cardinal directions—north, south, east, and west—framing our understanding of space. Ancient elements often came in fours: earth, water, air, and fire. In East Asia, four can be ominous, sounding like 'death' in some languages. Yet in many traditions, four symbolizes balance. A chair stands on four legs. The year cycles through four seasons. Jung described four functions of consciousness—thinking, feeling, sensing, and intuiting. It’s a square, solid and grounding.",
32
+ "image": {
33
+ "type": "markdown",
34
+ "markdown": ["# 4", "# four"]
35
+ }
36
+ },
37
+ {
38
+ "text": "Five is how we touch the world. With five fingers on each hand and five toes on each foot, we explore, build, and move. We experience life through five senses: sight, hearing, smell, taste, and touch. In Japanese philosophy, 'Godai' outlines five elements: earth, water, fire, wind, and void. In the West, the pentagram has been used as a symbol of balance and protection. It’s also a human shape—arms and legs spread wide. The number five reflects our human experience: curious, sensory, and striving for meaning.",
39
+ "image": {
40
+ "type": "markdown",
41
+ "markdown": ["# 5", "# five"]
42
+ }
43
+ },
44
+ {
45
+ "text": "Six is often seen as a number of harmony and order. In geometry, the hexagon is one of the most efficient and natural forms—think honeycombs or snowflakes. In Christianity, God created the world in six days. In music, a sixth interval is sweet and stable. In chemistry, carbon has six protons—this one element is the foundation of all life. In dice, six is the highest you can roll, often bringing fortune. And in ancient numerology, six represented responsibility and care—it's the number of the caregiver and the homebuilder.",
46
+ "image": {
47
+ "type": "markdown",
48
+ "markdown": ["# 6", "# six"]
49
+ }
50
+ },
51
+ {
52
+ "text": "Seven is a number shrouded in mystery. There are seven colors in the rainbow, seven days in a week, seven continents, and seven wonders of the ancient world. In literature, it's often a sacred or magical number—Harry Potter had seven horcruxes, Snow White had seven dwarves. In many religions, seven is divine: the seventh heaven, the seven chakras, the seven deadly sins. Mathematically, it’s a prime—indivisible, unique. It’s said that humans can best remember seven things at once. Something about it just feels… complete.",
53
+ "image": {
54
+ "type": "markdown",
55
+ "markdown": ["# 7", "# seven"]
56
+ }
57
+ },
58
+ {
59
+ "text": "Eight is a number of abundance and eternity. Turned on its side, it becomes the infinity symbol. In Chinese culture, 8 is extremely lucky, sounding like wealth or fortune. The Olympics in Beijing began on 8/8/08 at 8:08:08 PM for this reason. In Buddhism, the Eightfold Path outlines the steps toward enlightenment. Spiders have eight legs—symbols of patience and precision. Even in music, an octave spans eight notes. It’s the number of cycles, rebirths, and limitless potential—forever looping like a serpent eating its tail.",
60
+ "image": {
61
+ "type": "markdown",
62
+ "markdown": ["# 8", "# eight"]
63
+ }
64
+ },
65
+ {
66
+ "text": "Nine signals the end of a cycle. In pregnancy, it marks the final month before birth. In Norse mythology, there are nine worlds. In Dante’s Inferno, nine circles define Hell. Cats are said to have nine lives—resilient and mysterious. In Japanese culture, the number can be unlucky, associated with suffering. But it’s also powerful: the last single-digit number, composed of three threes. In mathematics, multiplying nine always returns to itself—18 becomes 1+8=9. It's the threshold, the peak before transformation begins again.",
67
+ "image": {
68
+ "type": "markdown",
69
+ "markdown": ["# 9", "# nine"]
70
+ }
71
+ }
72
+ ]
73
+ }
@@ -0,0 +1,145 @@
1
+ {
2
+ "$mulmocast": { "version": "1.1" },
3
+ "movieParams": {
4
+ "provider": "replicate",
5
+ "model": "bytedance/seedance-1-lite"
6
+ },
7
+ "audioParams": {
8
+ "bgmVolume": 0
9
+ },
10
+ "captionParams": {
11
+ "lang": "en"
12
+ },
13
+ "lang": "en",
14
+ "beats": [
15
+ {
16
+ "text": "movie generations by various text-to-movie models",
17
+ "image": {
18
+ "type": "textSlide",
19
+ "slide": {
20
+ "title": "PROMPT: a woman is walking through a busy Tokyo street at night, she is wearing dark sunglasses"
21
+ }
22
+ }
23
+ },
24
+ {
25
+ "id": "veo-2",
26
+ "text": "google/veo-2",
27
+ "duration": 5,
28
+ "moviePrompt": "a woman is walking through a busy Tokyo street at night, she is wearing dark sunglasses",
29
+ "movieParams": {
30
+ "model": "google/veo-2"
31
+ }
32
+ },
33
+ {
34
+ "id": "veo-3",
35
+ "text": "google/veo-3 with sound effect",
36
+ "duration": 8,
37
+ "moviePrompt": "a woman is walking through a busy Tokyo street at night, she is wearing dark sunglasses",
38
+ "movieParams": {
39
+ "model": "google/veo-3"
40
+ }
41
+ },
42
+ {
43
+ "id": "veo-3-fast with sound effect",
44
+ "text": "google/veo-3-fast",
45
+ "duration": 8,
46
+ "moviePrompt": "a woman is walking through a busy Tokyo street at night, she is wearing dark sunglasses",
47
+ "movieParams": {
48
+ "model": "google/veo-3-fast"
49
+ }
50
+ },
51
+ {
52
+ "id": "seedance-1-lite",
53
+ "text": "bytedance seedance-1-lite",
54
+ "moviePrompt": "a woman is walking through a busy Tokyo street at night, she is wearing dark sunglasses",
55
+ "duration": 5
56
+ },
57
+ {
58
+ "id": "seedance-1-lite-gpt4-image",
59
+ "text": "bytedance seedance-1-lite with gpt4-image",
60
+ "imagePrompt": "a woman is walking through a busy Tokyo street at night, she is wearing dark sunglasses",
61
+ "moviePrompt": "a woman is walking through a busy Tokyo street at night, she is wearing dark sunglasses",
62
+ "duration": 5
63
+ },
64
+ {
65
+ "id": "seedance-1-lite-gpt4-image-no-movie-prompt",
66
+ "text": "bytedance seedance-1-lite with gpt4-image, no movie prompt",
67
+ "imagePrompt": "a woman is walking through a busy Tokyo street at night, she is wearing dark sunglasses",
68
+ "moviePrompt": " ",
69
+ "duration": 5
70
+ },
71
+ {
72
+ "id": "seedance-1-pro",
73
+ "text": "bytedance/seedance-1-pro",
74
+ "duration": 5,
75
+ "moviePrompt": "a woman is walking through a busy Tokyo street at night, she is wearing dark sunglasses",
76
+ "movieParams": {
77
+ "model": "bytedance/seedance-1-pro"
78
+ }
79
+ },
80
+ {
81
+ "id": "video-01",
82
+ "text": "minimax/video-01",
83
+ "moviePrompt": "a woman is walking through a busy Tokyo street at night, she is wearing dark sunglasses",
84
+ "movieParams": {
85
+ "model": "minimax/video-01"
86
+ }
87
+ },
88
+ {
89
+ "id": "kling-v1.6-pro",
90
+ "text": "kwaivgi/kling-v1.6-pro with gpt4-image",
91
+ "imagePrompt": "a woman is walking through a busy Tokyo street at night, she is wearing dark sunglasses",
92
+ "moviePrompt": "a woman is walking through a busy Tokyo street at night, she is wearing dark sunglasses",
93
+ "movieParams": {
94
+ "model": "kwaivgi/kling-v1.6-pro"
95
+ }
96
+ },
97
+ {
98
+ "id": "kling-v2.1",
99
+ "text": "kwaivgi/kling-v2.1 with gpt4-image",
100
+ "imagePrompt": "a woman is walking through a busy Tokyo street at night, she is wearing dark sunglasses",
101
+ "moviePrompt": "a woman is walking through a busy Tokyo street at night, she is wearing dark sunglasses",
102
+ "movieParams": {
103
+ "model": "kwaivgi/kling-v2.1"
104
+ }
105
+ },
106
+ {
107
+ "id": "hailuo-02",
108
+ "text": "minimax/hailuo-02",
109
+ "duration": 6,
110
+ "moviePrompt": "televised footage of a cat is doing an acrobatic dive into a swimming pool at the olympics, from a 10m high diving board, flips and spins",
111
+ "movieParams": {
112
+ "model": "minimax/hailuo-02"
113
+ }
114
+ },
115
+ {
116
+ "id": "hailuo-02-image",
117
+ "text": "minimax/hailuo-02 with ghibli-styleimage",
118
+ "duration": 6,
119
+ "imagePrompt": "a cat is doing an acrobatic dive into a swimming pool at the olympics, from a 10m high diving board, Ghibli style",
120
+ "moviePrompt": "televised footage of a cat is doing an acrobatic dive into a swimming pool at the olympics, from a 10m high diving board, flips and spins",
121
+ "movieParams": {
122
+ "model": "minimax/hailuo-02"
123
+ }
124
+ },
125
+ {
126
+ "id": "wan-2.2-i2v-480p-fast",
127
+ "text": "wan-video/wan-2.2-i2v-480p-fast",
128
+ "duration": 5,
129
+ "imagePrompt": "a woman is walking through a busy Tokyo street at night, she is wearing dark sunglasses",
130
+ "moviePrompt": "a woman is walking through a busy Tokyo street at night, she is wearing dark sunglasses",
131
+ "movieParams": {
132
+ "model": "wan-video/wan-2.2-i2v-480p-fast"
133
+ }
134
+ },
135
+ {
136
+ "id": "wan-2.2-t2v-480p-fast",
137
+ "text": "wan-video/wan-2.2-t2v-480p-fast",
138
+ "duration": 5,
139
+ "moviePrompt": "a woman is walking through a busy Tokyo street at night, she is wearing dark sunglasses",
140
+ "movieParams": {
141
+ "model": "wan-video/wan-2.2-t2v-480p-fast"
142
+ }
143
+ }
144
+ ]
145
+ }
@@ -0,0 +1,46 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.1"
4
+ },
5
+ "lang": "en",
6
+ "title": "Transition Test",
7
+ "movieParams": {
8
+ "transition": {
9
+ "type": "slideout_left",
10
+ "duration": 1.0
11
+ }
12
+ },
13
+ "beats": [
14
+ {
15
+ "speaker": "Presenter",
16
+ "text": "",
17
+ "image": {
18
+ "type": "image",
19
+ "source": {
20
+ "kind": "path",
21
+ "path": "../../assets/images/mulmocast_credit.png"
22
+ }
23
+ }
24
+ },
25
+ {
26
+ "speaker": "Presenter",
27
+ "duration": 3.0,
28
+ "image": {
29
+ "type": "textSlide",
30
+ "slide": {
31
+ "title": "3.0 second with no Audio"
32
+ }
33
+ }
34
+ },
35
+ {
36
+ "speaker": "Presenter",
37
+ "image": {
38
+ "type": "movie",
39
+ "source": {
40
+ "kind": "url",
41
+ "url": "https://github.com/receptron/mulmocast-media/raw/refs/heads/main/test/pingpong.mov"
42
+ }
43
+ }
44
+ }
45
+ ]
46
+ }
@@ -0,0 +1,41 @@
1
+ {
2
+ "$mulmocast": { "version": "1.1" },
3
+ "movieParams": {
4
+ "provider": "replicate",
5
+ "model": "bytedance/seedance-1-lite"
6
+ },
7
+ "audioParams": {
8
+ "bgmVolume": 0.01,
9
+ "suppressSpeech": true
10
+ },
11
+ "captionParams": {
12
+ "lang": "en"
13
+ },
14
+ "lang": "en",
15
+ "beats": [
16
+ {
17
+ "id": "horse_galloping",
18
+ "text": "A horse galloping",
19
+ "duration": 10,
20
+ "imagePrompt": "A wide view of a horse galloping fast in a large field",
21
+ "moviePrompt": "A horse galloping fast in a large field",
22
+ "soundEffectPrompt": "galloping"
23
+ },
24
+ {
25
+ "id": "cat_jumping_into_pool",
26
+ "text": "cat jumping into a swimming pool",
27
+ "duration": 10,
28
+ "imagePrompt": "A televised view of a cat is on a 10m high jumping board, preparing to jump into a swimming pool at the olympics",
29
+ "moviePrompt": "televised footage of a cat is doing an acrobatic dive into a swimming pool at the olympics, from a 10m high diving board, flips and spins",
30
+ "soundEffectPrompt": "sound of a cat jumping into a swimming pool"
31
+ },
32
+ {
33
+ "id": "ice cutting",
34
+ "text": "Cutting ice with a sharp knife",
35
+ "duration": 10,
36
+ "imagePrompt": "Close up of a sharp knife is ready to cut a slice out of a block ofice",
37
+ "moviePrompt": "Close up of a sharp knife is cutting a slice out of a block of ice",
38
+ "soundEffectPrompt": "cutting ice"
39
+ }
40
+ ]
41
+ }
@@ -0,0 +1,117 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.1"
4
+ },
5
+ "lang": "en",
6
+ "title": "Spillover Test",
7
+ "beats": [
8
+ {
9
+ "text": "This beat has a long audio, which exceeds the beat duration.",
10
+ "duration": 2,
11
+ "image": {
12
+ "type": "textSlide",
13
+ "slide": {
14
+ "title": "1. Has Text. Duration = 2."
15
+ }
16
+ }
17
+ },
18
+ {
19
+ "image": {
20
+ "type": "textSlide",
21
+ "slide": {
22
+ "title": "2. Default duration = 1. Expected spillover."
23
+ }
24
+ }
25
+ },
26
+ {
27
+ "text": "This beat has a really long audio, which clearly exceeds the beat duration.",
28
+ "duration": 1,
29
+ "image": {
30
+ "type": "textSlide",
31
+ "slide": {
32
+ "title": "3. Has Text. Duration = 1."
33
+ }
34
+ }
35
+ },
36
+ {
37
+ "duration": 2,
38
+ "image": {
39
+ "type": "textSlide",
40
+ "slide": {
41
+ "title": "4. Duration = 2. Expected spillover."
42
+ }
43
+ }
44
+ },
45
+ {
46
+ "duration": 1,
47
+ "image": {
48
+ "type": "textSlide",
49
+ "slide": {
50
+ "title": "5. Duration = 1, Expected spillover."
51
+ }
52
+ }
53
+ },
54
+ {
55
+ "text": "This beat has a really long audio, which is shared among three beats.",
56
+ "image": {
57
+ "type": "textSlide",
58
+ "slide": {
59
+ "title": "6. Has Text. No duration."
60
+ }
61
+ }
62
+ },
63
+ {
64
+ "image": {
65
+ "type": "textSlide",
66
+ "slide": {
67
+ "title": "7. No duration. Expected even-split spillover."
68
+ }
69
+ }
70
+ },
71
+ {
72
+ "image": {
73
+ "type": "textSlide",
74
+ "slide": {
75
+ "title": "8. No duration. Expected even-split spillover."
76
+ }
77
+ }
78
+ },
79
+ {
80
+ "duration": 1.5,
81
+ "text": "This beat has a short audio.",
82
+ "image": {
83
+ "type": "textSlide",
84
+ "slide": {
85
+ "title": "9. Has Text. No duration."
86
+ }
87
+ }
88
+ },
89
+ {
90
+ "duration": 1,
91
+ "image": {
92
+ "type": "textSlide",
93
+ "slide": {
94
+ "title": "10. No duration. Expected some spillover."
95
+ }
96
+ }
97
+ },
98
+ {
99
+ "image": {
100
+ "type": "textSlide",
101
+ "slide": {
102
+ "title": "11. No duration. Expected no spillover."
103
+ }
104
+ }
105
+ },
106
+ {
107
+ "duration": 1,
108
+ "text": "This beat has a short audio.",
109
+ "image": {
110
+ "type": "textSlide",
111
+ "slide": {
112
+ "title": "12. Has Text. No duration."
113
+ }
114
+ }
115
+ }
116
+ ]
117
+ }
@@ -0,0 +1,56 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.1"
4
+ },
5
+ "lang": "en",
6
+ "title": "Transition Test",
7
+ "movieParams": {
8
+ "transition": {
9
+ "type": "fade",
10
+ "duration": 1.0
11
+ }
12
+ },
13
+ "beats": [
14
+ {
15
+ "speaker": "Presenter",
16
+ "text": "This is a local image.",
17
+ "image": {
18
+ "type": "image",
19
+ "source": {
20
+ "kind": "path",
21
+ "path": "../../assets/images/mulmocast_credit.png"
22
+ }
23
+ }
24
+ },
25
+ {
26
+ "speaker": "Presenter",
27
+ "duration": 3.0,
28
+ "image": {
29
+ "type": "textSlide",
30
+ "slide": {
31
+ "title": "3.0 second with no Audio"
32
+ }
33
+ }
34
+ },
35
+ {
36
+ "speaker": "Presenter",
37
+ "image": {
38
+ "type": "movie",
39
+ "source": {
40
+ "kind": "url",
41
+ "url": "https://github.com/receptron/mulmocast-media/raw/refs/heads/main/test/pingpong.mov"
42
+ }
43
+ }
44
+ },
45
+ {
46
+ "speaker": "Presenter",
47
+ "text": "This is a text slide with audio.",
48
+ "image": {
49
+ "type": "textSlide",
50
+ "slide": {
51
+ "title": "Text Slide with Audio"
52
+ }
53
+ }
54
+ }
55
+ ]
56
+ }
@@ -0,0 +1,46 @@
1
+ {
2
+ "$mulmocast": {
3
+ "version": "1.1"
4
+ },
5
+ "lang": "en",
6
+ "title": "Transition Test",
7
+ "movieParams": {
8
+ "transition": {
9
+ "type": "fade",
10
+ "duration": 1.0
11
+ }
12
+ },
13
+ "beats": [
14
+ {
15
+ "speaker": "Presenter",
16
+ "text": "",
17
+ "image": {
18
+ "type": "image",
19
+ "source": {
20
+ "kind": "path",
21
+ "path": "../../assets/images/mulmocast_credit.png"
22
+ }
23
+ }
24
+ },
25
+ {
26
+ "speaker": "Presenter",
27
+ "duration": 3.0,
28
+ "image": {
29
+ "type": "textSlide",
30
+ "slide": {
31
+ "title": "3.0 second with no Audio"
32
+ }
33
+ }
34
+ },
35
+ {
36
+ "speaker": "Presenter",
37
+ "image": {
38
+ "type": "movie",
39
+ "source": {
40
+ "kind": "url",
41
+ "url": "https://github.com/receptron/mulmocast-media/raw/refs/heads/main/test/pingpong.mov"
42
+ }
43
+ }
44
+ }
45
+ ]
46
+ }