Let Prism hooks vary in length and melodic contour

This commit is contained in:
firestar5683
2026-09-19 15:34:32 -07:00
parent ed1cafe4e7
commit ca9154562d
2 changed files with 8 additions and 8 deletions
+2 -2
View File
@@ -14,12 +14,12 @@ import tempfile
import numpy as np
VERSION = 'roadscore-hook-plan-v3-gold-groove'
VERSION = 'roadscore-hook-plan-v4-open-melody'
PROFILES = {
'prism': {'bpm': 128, 'keyscale': 'D minor', 'identity':
'Instrumental polished K-pop and modern electronic game score. No vocals, no singing, no speech. '
'Continuous tight drum groove, punchy bass, memorable recurring hook, polished dynamic arrangement. '
'128 BPM, D minor. Crystal pluck arpeggios and a playful four-note rising synth motif; '
'128 BPM, D minor. Crystal pluck arpeggios and a playful, memorable synth melody with a clear recurring hook; '
'crisp electronic snare, rubbery syncopated bass and bright glass leads.'},
'aurora': {'bpm': 116, 'keyscale': 'A minor', 'identity':
'Instrumental melodic game score; warm analog synths, shimmering bell answers, '
+6 -6
View File
@@ -25,21 +25,21 @@ def fake_prepare(req, sources, out):
class PlanningTests(unittest.TestCase):
def test_gold_groove_reaches_every_prepared_role_and_invalidates_old_plans(self):
def test_open_melody_reaches_every_prepared_role_and_invalidates_old_plans(self):
initial = request()
gold = ('Instrumental polished K-pop and modern electronic game score. No vocals, no singing, no speech. '
identity = ('Instrumental polished K-pop and modern electronic game score. No vocals, no singing, no speech. '
'Continuous tight drum groove, punchy bass, memorable recurring hook, polished dynamic arrangement. '
'128 BPM, D minor. Crystal pluck arpeggios and a playful four-note rising synth motif; '
'128 BPM, D minor. Crystal pluck arpeggios and a playful, memorable synth melody with a clear recurring hook; '
'crisp electronic snare, rubbery syncopated bass and bright glass leads.')
self.assertTrue(initial.caption.startswith(gold))
self.assertTrue(initial.caption.startswith(identity))
self.assertIn('Enter immediately', initial.caption)
self.assertEqual(initial.lyrics, '[Instrumental]\n[Verse]')
self.assertNotEqual(initial.cache_key, replace(initial, version='roadscore-hook-plan-v2').cache_key)
self.assertNotEqual(initial.cache_key, replace(initial, version='roadscore-hook-plan-v3-gold-groove').cache_key)
for role in ('verse', 'prechorus', 'chorus', 'bridge', 'outro'):
current = request(plan_index=1, section=role, window_seconds=45,
hook_reference_sha256='c'*64, committed_prefix_sha256='d'*64,
previous_plan_sha256='e'*64)
self.assertTrue(current.caption.startswith(gold))
self.assertTrue(current.caption.startswith(identity))
self.assertNotIn('breathing space', current.caption)
self.assertNotIn('lighter', current.caption)
self.assertEqual(current.prefix_seconds, 8)