From 8039da37188a747fbc7b6236c7743c5389422150 Mon Sep 17 00:00:00 2001 From: Jonathan Hogg Date: Sun, 22 Sep 2019 18:56:04 +0100 Subject: [PATCH] Playing at the end --- cues.py | 23 ++++++++++++++++++----- notes.md | 21 +++++++++++++++++++++ setup.py | 9 +++++++++ 3 files changed, 48 insertions(+), 5 deletions(-) create mode 100644 notes.md diff --git a/cues.py b/cues.py index b59282a..f29e83e 100644 --- a/cues.py +++ b/cues.py @@ -8,7 +8,7 @@ from constants import * #%% -BPM = 126 +BPM = 118 client.activate() @@ -58,6 +58,7 @@ with Cue('Q06', name='Emoji'): with Cue('Q07', name='Helmet', fadeIn=1, fadeOut=1): Match('#helmet').fader = 1 + Match('#symbol Text').text = '⭐️' with Cue('Q08', name='Shrinking mask', fadeIn=1, fadeOut=1): period = 20 @@ -126,12 +127,12 @@ with Cue('Q23', name='Thin stars', fadeIn=1, fadeOut=1): hue = quad(count, uniform('Q23.hue', i)[count], uniform('Q23.hue', i)[count + 1]) Match('#stars').fader = 1 with Match('.star') as m: - m.lineWidth = sine(count) / 10 + m.lineWidth = sine(count) / 5 m.scale = 50 m.x = (uniform('Q23.x')[i] - 0.5) * screen.width m.y = (uniform('Q23.y')[i] - 0.5) * screen.height m.rotate = count / 10 - Match('.star .outline').color = hsv(hue, 0.8, 1) + Match('.star .outline').color = hsv(hue, 0.75, 1) with Cue('Q24', name='Rushing stars', fadeIn=1, fadeOut=1): period = 3 @@ -163,5 +164,17 @@ with Cue('Q41', name='Tunnel', fadeIn=1, fadeOut=1): period = 2 count = t / period Match('#tunnel').fader = 1 - Match('#tunnel .loop').color = hsv(count - i/n, 1, 0.25 + 0.75 * i/n) - Match('#tunnel').scale = 1 + (TunnelLoopMultiplier - 1) * sawtooth(count) + Match('#tunnel .loop', mix=False).color = hsv(count - i/n, 1, 0.25 + 0.75 * i/n) + Match('#tunnel', mix=False).scale = 1 + (TunnelLoopMultiplier - 1) * sawtooth(count) + +with Cue('Q51', name='Blowing bubbles', fadeIn=1, fadeOut=1): + period = 6 + phase = uniform('Q51.phase')[i] + count = gt / period + phase + Match('#bubbles').fader = 1 + with Match('.bubble') as m: + m.x = (uniform('Q51.x', i)[count] - 0.5) * screen.width * 2 * (count % 1) + m.y = (uniform('Q51.y', i)[count] - 0.5) * screen.height * 2 * (count % 1) + m.scale = uniform('Q51.scale', i)[count] * 10 + Match('.bubble .inside').color = white(0.3 * sine(count)) + Match('.bubble .outside').color = hsv(uniform('Q51.hue', i)[count], 0.8, sine(count)) diff --git a/notes.md b/notes.md new file mode 100644 index 0000000..a89ef52 --- /dev/null +++ b/notes.md @@ -0,0 +1,21 @@ +# Notes + +- Need to reintroduce the audio processing for reacting to music +- Figure out a mechanism for introducing repetition into the object graph that can be controlled from the cue animations – i.e., be able to control the number of repeated objects + +```python + +with Repeat(id='stars', count=1): + with Path(tags='star'): + pass + +with Cue('Qxx'): + Match('#stars').count = sine(t / 10) * 50 + with Match('.star') as m: + m.x = uniform('Qxx.x')[i] * width + m.y = uniform('Qxx.x')[i] * height + m.color = hsv(i / n, 1, 1) +``` + +- Would need to be able to identify objects via something other than their _id_ – perhaps indexed instead? +- `KitObject.select()` method would need to know how to return these repeated objects diff --git a/setup.py b/setup.py index 0564171..fdceda6 100644 --- a/setup.py +++ b/setup.py @@ -148,6 +148,15 @@ with Screen('main', width=1920, height=1080) as screen: with Path(tags='outline'): Star(10) StrokePath() + with Group('bubbles', composite='lighter', x=screen.width / 2, y=screen.height / 2, fader=0): + for j in range(100): + with Group(tags='bubble'): + with Path(tags='inside'): + Ellipse(0, 0, 10, 10) + FillPath() + with Path(tags='outside'): + Ellipse(0, 0, 10, 10) + StrokePath() with Group('spirals', x=screen.width/2, y=screen.height/2, color='white', lineWidth=2, fader=0, composite='lighter'): for j in range(Spirals): Spiral(rotate=j/Spirals, count=j, tags='spiral')