-
Notifications
You must be signed in to change notification settings - Fork 2
/
SuperBrain.lua
95 lines (79 loc) · 2.05 KB
/
SuperBrain.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
-- SUPER_BRAIN
-- v1.0.0 @beat
-- https://llllllll.co/t/superbrain-multi-engine-midi-sequencer/44781
--
-- multi track sequencer
--
-- select LP_X as midi device 1
-- select 4 devices on slots 2-5
-- print("Midi 0 name"..midi.vports[0].name)
--[[
-- set true if using a Monome Grid, false if using a Novation Launchpad X
--]]
USE_GRID128 = true
local midi_1_name = midi.connect(1).name
if string.find(midi_1_name, "Launchpad") then
USE_GRID128 = false
end
LP_X = include('lib/grid/LP_X')
Grid128 = include('lib/grid/Grid128')
if USE_GRID128 then
main_grid = Grid128.new(1, grid.connect())
else
main_grid = LP_X.new(1,midi.connect(1),false,127)
end
MusicUtil = require 'musicutil'
tabutil = include('lib/misc/tabutil')
include('lib/misc/helper_functions')
--[[
change the sc engine here
and redefine how poly_fork should handle on and off
--]]
engine.name = "PolyPerc"
include('lib/poly_fork')
Poly_Fork.engine_on = function (pitch,vel)
engine.amp(util.linlin(0,1,0.05,0.7,vel))
engine.hz(MusicUtil.note_num_to_freq(pitch))
end
Poly_Fork.engine_off = function (pitch,vel) end
include('lib/brain')
BRAIN = Brain(main_grid)
MENU_ENC = 0
function init()
-- Create data directory if it doesn't exist
if not util.file_exists(_path.data.."SUPER_BRAIN/") then
util.make_dir(_path.data.."SUPER_BRAIN/")
print("Made SUPER_BRAIN data directory")
end
if USE_GRID128 then
setup_device_slots({1,2,3,4})
else
setup_device_slots({2,3,4,5})
end
BRAIN:init()
BRAIN:set_visible(1)
clock.run(function () while true do redraw() clock.sleep(1/24) end end)
end
function key(n,z)
if n==1 and z==1 then
if BRAIN.ui_mode == "apps" then BRAIN.ui_mode = "settings"
else BRAIN.ui_mode = "apps" end
print(BRAIN.ui_mode)
elseif n==2 then
MENU_ENC = 1
BRAIN.help = z==1
end
end
function enc(n,d)
MENU_ENC = util.clamp(MENU_ENC+d,1,10)
end
function redraw()
screen:clear()
BRAIN:redraw_screen()
screen:update()
end
function cleanup()
BRAIN:cleanup()
BRAIN = nil
for cl_id,_ in pairs(clock.threads) do clock.cancel(cl_id) end
end