67 lines
2.4 KiB
Python
67 lines
2.4 KiB
Python
from core.models import Artist, EffectModule, Preset, SignalChainStep
|
|
from django.utils.text import slugify
|
|
|
|
# 1. Create Effect Modules
|
|
modules_data = [
|
|
('Noise Gate', 'dynamics', 'bi-shield-shaded'),
|
|
('Compressor', 'dynamics', 'bi-input-cursor'),
|
|
('Overdrive TS-808', 'drive', 'bi-lightning-charge'),
|
|
('High Gain Amp', 'amp', 'bi-speaker'),
|
|
('Clean Tube Amp', 'amp', 'bi-speaker'),
|
|
('Dual IR Loader', 'utility', 'bi-file-earmark-music'),
|
|
('Stereo Chorus', 'modulation', 'bi-water'),
|
|
('Classic Flanger', 'modulation', 'bi-wind'),
|
|
('Analog Delay', 'delay_reverb', 'bi-hourglass-split'),
|
|
('Wah Wah Pedal', 'utility', 'bi-reception-4'),
|
|
]
|
|
|
|
created_modules = {}
|
|
for name, cat, icon in modules_data:
|
|
mod, _ = EffectModule.objects.get_or_create(
|
|
name=name,
|
|
defaults={'category': cat, 'icon_class': icon}
|
|
)
|
|
created_modules[name] = mod
|
|
|
|
# 2. Get Artists
|
|
artists = Artist.objects.all()
|
|
|
|
# 3. Create 5 Presets per Artist
|
|
for artist in artists:
|
|
for i in range(1, 6):
|
|
title = f"{artist.name} Signature {i}"
|
|
slug = slugify(f"{artist.name}-{i}-{title}")
|
|
|
|
preset, created = Preset.objects.get_or_create(
|
|
artist=artist,
|
|
slug=slug,
|
|
defaults={
|
|
'title': title,
|
|
'description': f"A signature tone for {artist.name}, optimized for {artist.style} style."
|
|
}
|
|
)
|
|
|
|
if created:
|
|
# Build a typical signal chain
|
|
# Order: Gate -> Comp -> Wah -> Drive -> Amp -> IR -> Mod -> Delay
|
|
steps = [
|
|
('Noise Gate', 'Threshold: -40dB'),
|
|
('Compressor', 'Ratio: 4:1'),
|
|
('Wah Wah Pedal', 'Auto-sweep'),
|
|
('Overdrive TS-808', 'Drive: 4, Tone: 6'),
|
|
('High Gain Amp', 'Gain: 7, Bass: 5, Mid: 6, Treble: 7'),
|
|
('Dual IR Loader', 'Cab A: 4x12 SM57, Cab B: 4x12 R121'),
|
|
('Stereo Chorus', 'Rate: 0.5Hz, Depth: 40%'),
|
|
('Analog Delay', 'Time: 450ms, Feedback: 30%'),
|
|
]
|
|
|
|
for idx, (mod_name, settings) in enumerate(steps):
|
|
SignalChainStep.objects.create(
|
|
preset=preset,
|
|
module=created_modules[mod_name],
|
|
order=idx,
|
|
settings_summary=settings
|
|
)
|
|
|
|
print("Successfully seeded 5 presets per artist.")
|