import numpy as np
from moviepy.editor import ColorClip, TextClip, CompositeVideoClip, AudioClip
duration = 60
fps = 24
size = (1280, 720)
# Background
bg = ColorClip(size, color=(5, 5, 5), duration=duration)
# Text Clip
qtyanak_text = "⟁⟟⟁ Ʌ⟟⟟ ⟟⟁⟟⟁ ✶ QTYÀNAK ✶"
text = TextClip(
qtyanak_text,
fontsize=80,
color="white",
font="DejaVu-Sans-Bold",
method='caption', # Better for special characters
size=(size[0]*0.8, None)
).set_position("center").set_duration(duration)
# Dynamic Opacity (Flicker)
# Using set_opacity with a function is more efficient than a mask clip
def flicker_opacity(t):
# Oscillates between ~0.1 and 1.0
val = 0.55 + 0.45 * np.sin(20 * t) * np.sin(3 * t)
return val
text = text.set_opacity(flicker_opacity)
# Composite
video = CompositeVideoClip([bg, text])
# Audio: Neurofunk-style FM Synthesis
sr = 44100
def neurofunk_audio(t):
# Carrier 55Hz (A1), Modulator 2Hz
# Added a slight decay/reverb feel with a second oscillator
bass = np.sin(2 * np.pi * 55 * t + 5 * np.sin(2 * np.pi * 2 * t))
wobble = np.sign(np.sin(2 * np.pi * 8 * t)) # Square wave wobble
return 0.3 * bass * wobble
audio = AudioClip(neurofunk_audio, duration=duration, fps=sr)
final = video.set_audio(audio)
# Output
output_path = "dark_neurofunk_qtyanak_birthday.mp4"
final.write_videofile(output_path, fps=fps, codec="libx264", audio_codec="aac")