-
Notifications
You must be signed in to change notification settings - Fork 3
/
yggdrasil.lua
96 lines (90 loc) · 1.8 KB
/
yggdrasil.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
-- k1: exit e1: select
--
--
-- e2: pan x e3: pan y
--
-- k2: play k3: ???
include("lib/includes")
function init()
y = {}
parameters.init()
filesystem.init()
fn.init()
_midi.init()
_crow.init()
_clock.init()
ypc.init()
music.init()
terminal.init()
runner.init()
commands.init()
variables.init()
view.init()
graphics.init()
keys.init()
page.init()
synth.init()
editor.init()
tracker.init()
clipboard.init()
selector.init()
tracker:refresh()
runner:start()
y.screen_dirty = true
y.splash_break = false
y.init_done = true
y.redraw_clock_id = clock.run(graphics.redraw_clock)
y.frame_clock_id = clock.run(graphics.frame_clock)
y._clock_id = clock.run(_clock.global_clock)
page:select(parameters.is_splash_screen_on and 0 or 1)
runner:startup_routine()
if config.settings.dev_mode then dev:scene(config.settings.dev_scene) end
redraw()
end
function enc(e, d)
if e == 1 then
tracker:cycle_select(d)
elseif e == 2 then
if synth:is_encoder_override() then
synth:scroll_m1(d)
else
if not view:is_transposed() then
view:pan_x(d)
else
view:pan_y(d)
end
end
elseif e == 3 then
if synth:is_encoder_override() then
synth:scroll_m2(d)
else
if not view:is_transposed() then
view:pan_y(d)
else
view:pan_x(d)
end
end
end
fn.dismiss_messages()
fn.dirty_screen(true)
end
function key(k, z)
if z == 0 then return end
if k == 1 then
-- exit
elseif k == 2 then
tracker:toggle_playback()
fn.dismiss_messages()
elseif k == 3 then
commands:fire_k3()
end
fn.dirty_screen(true)
end
function redraw()
if not fn.dirty_screen() then return end
page:render()
fn.dirty_screen(false)
end
function cleanup()
_midi:all_off()
end