import random
from pydub import AudioSegment
from granules import Granule, Render

# Загружаем аудиофайл
audio = AudioSegment.from_file("./mocart-lacrimosa-dies-illa.mp3")

# Инициализируем класс рендера
render = Render()

# Создаем случайное количество гранул от 5 до 30
for _ in range(random.randint(5, 30)):

    # Определяем случайную позицию гранулы с 10мс до 100000мс,
    # а так же ее длину от 50мс до 300мс
    start = random.randint(10, 100000)
    end = start + random.randint(50, 300)

    # Случайно выбираем длительность сглаживания начала и завершения гранулы
    fade_start=random.randint(0, 10)
    fade_end=random.randint(0, 10)

    # Случайно выбираем от 2 до 10 повторений гранулы
    iterations = random.randint(2, 10)
    
    # Инициализируем класс гранулы и рендерим ее
    granule = Granule(
        audio,
        iterations=iterations,
        start=start,
        end=end,
        fade_start=fade_start,
        fade_end=fade_end
    )
    granule.render()

    # Добавляем рендер гранулы в очередь рендеринга
    render.append(granule)

# Запускаем рендер очереди в единый аудио-файл, сохраняем и проигрываем его
render.render()
render.export_mp3('./lacrimoza_mix.mp3')
render.play()