mirror of
https://github.com/IgorTimofeev/MineOS.git
synced 2025-12-20 11:09:21 +01:00
Добавил крутилочку гейна и чувствительности джога
This commit is contained in:
parent
470bff63e7
commit
fe8c26fc38
Binary file not shown.
@ -15,22 +15,29 @@ local event = require("Event")
|
|||||||
local currentScriptDirectory = filesystem.path(system.getCurrentScript())
|
local currentScriptDirectory = filesystem.path(system.getCurrentScript())
|
||||||
|
|
||||||
local configPath = paths.user.applicationData .. "Pioneer/Config.cfg"
|
local configPath = paths.user.applicationData .. "Pioneer/Config.cfg"
|
||||||
local config
|
|
||||||
|
local config = {
|
||||||
|
tapes = {
|
||||||
|
|
||||||
|
},
|
||||||
|
timeMode = 0,
|
||||||
|
jogSpeed = 0,
|
||||||
|
gain = 1,
|
||||||
|
speed = 0.5,
|
||||||
|
speedIndex = 0,
|
||||||
|
}
|
||||||
|
|
||||||
if filesystem.exists(configPath) then
|
if filesystem.exists(configPath) then
|
||||||
config = filesystem.readTable(configPath)
|
local loadedConfig = filesystem.readTable(configPath)
|
||||||
|
|
||||||
-- Older versions support
|
-- Older versions support
|
||||||
config.timeMode = config.timeMode or 0
|
for key, value in pairs(config) do
|
||||||
config.jogSpeed = config.jogSpeed or 0
|
if not loadedConfig[key] then
|
||||||
else
|
loadedConfig[key] = value
|
||||||
config = {
|
end
|
||||||
tapes = {
|
end
|
||||||
|
|
||||||
},
|
config = loadedConfig
|
||||||
timeMode = 0,
|
|
||||||
jogSpeed = 0
|
|
||||||
}
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local function saveConfig()
|
local function saveConfig()
|
||||||
@ -46,7 +53,6 @@ local blinkState = false
|
|||||||
local blinkUptime = 0
|
local blinkUptime = 0
|
||||||
local blinkInterval = 0.5
|
local blinkInterval = 0.5
|
||||||
|
|
||||||
local speedSlider
|
|
||||||
local powerButton
|
local powerButton
|
||||||
|
|
||||||
local tapes
|
local tapes
|
||||||
@ -61,14 +67,16 @@ local function setPosition(value)
|
|||||||
invoke("seek", value - invoke("getPosition"))
|
invoke("seek", value - invoke("getPosition"))
|
||||||
end
|
end
|
||||||
|
|
||||||
local function getCurrentTapeSpeed()
|
local function getTapeSpeed()
|
||||||
local speed = 2 * speedSlider.value - 1
|
local speed = 2 * config.speed - 1
|
||||||
|
|
||||||
if tapeConfig.speedIndex == 0 then
|
if config.speedIndex == 0 then
|
||||||
speed = speed * 0.25
|
speed = speed * 0.25
|
||||||
elseif tapeConfig.speedIndex == 1 then
|
|
||||||
|
elseif config.speedIndex == 1 then
|
||||||
speed = speed * 0.5
|
speed = speed * 0.5
|
||||||
elseif tapeConfig.speedIndex == 2 then
|
|
||||||
|
elseif config.speedIndex == 2 then
|
||||||
speed = speed * 0.75
|
speed = speed * 0.75
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -76,17 +84,16 @@ local function getCurrentTapeSpeed()
|
|||||||
end
|
end
|
||||||
|
|
||||||
local function updateCurrentTapeSpeed()
|
local function updateCurrentTapeSpeed()
|
||||||
local speed = getCurrentTapeSpeed()
|
invoke("setSpeed", 1 + getTapeSpeed() * 0.75)
|
||||||
|
|
||||||
invoke("setSpeed", 1 + speed * 0.75)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local function updateCurrentTape()
|
local function updateCurrentTape()
|
||||||
tape = tapes[tapeIndex]
|
tape = tapes[tapeIndex]
|
||||||
tapeConfig = config.tapes[tape.address]
|
tapeConfig = config.tapes[tape.address]
|
||||||
speedSlider.value = tapeConfig.speed
|
|
||||||
config.lastTape = tape.address
|
config.lastTape = tape.address
|
||||||
|
|
||||||
|
-- Because there's no "getSpeed" function...
|
||||||
updateCurrentTapeSpeed()
|
updateCurrentTapeSpeed()
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -106,8 +113,6 @@ local function updateTapes()
|
|||||||
|
|
||||||
if not config.tapes[address] then
|
if not config.tapes[address] then
|
||||||
config.tapes[address] = {
|
config.tapes[address] = {
|
||||||
speed = 0.5,
|
|
||||||
speedIndex = 0,
|
|
||||||
cue = 0,
|
cue = 0,
|
||||||
cues = {},
|
cues = {},
|
||||||
cueIndex = 1,
|
cueIndex = 1,
|
||||||
@ -247,7 +252,7 @@ local function incrementJogIndex(value)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local function invalidateJogIncrementUptime(uptime)
|
local function invalidateJogIncrementUptime(uptime)
|
||||||
jogIncrementUptime = uptime + (1 - speedSlider.value) * (jogIncrementSpeedMax - jogIncrementSpeedMin)
|
jogIncrementUptime = uptime + (1 - config.speed) * (jogIncrementSpeedMax - jogIncrementSpeedMin)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function displayDrawProgressBar(x, y, width, progress)
|
local function displayDrawProgressBar(x, y, width, progress)
|
||||||
@ -306,7 +311,7 @@ overlay.draw = function(overlay)
|
|||||||
|
|
||||||
-- Tempo
|
-- Tempo
|
||||||
screen.drawText(statsX + 24, statsY, 0xE1E1E1, "Tempo")
|
screen.drawText(statsX + 24, statsY, 0xE1E1E1, "Tempo")
|
||||||
screen.drawText(statsX + 26, statsY + 1, 0xE1E1E1, string.format("%02d", math.floor(getCurrentTapeSpeed() * 100)) .. "%")
|
screen.drawText(statsX + 26, statsY + 1, 0xE1E1E1, string.format("%02d", math.floor(getTapeSpeed() * 100)) .. "%")
|
||||||
|
|
||||||
-- Tempo index
|
-- Tempo index
|
||||||
|
|
||||||
@ -415,10 +420,10 @@ end
|
|||||||
|
|
||||||
-------------------------------- Speed slider ------------------------------------------------
|
-------------------------------- Speed slider ------------------------------------------------
|
||||||
|
|
||||||
|
local speedSlider = window:addChild(GUI.object(71, 33, 5, 15))
|
||||||
local speedSliderImage = loadImage("SpeedSlider")
|
local speedSliderImage = loadImage("SpeedSlider")
|
||||||
|
|
||||||
speedSlider = window:addChild(GUI.object(71, 33, 5, 15))
|
speedSlider.value = config.speed
|
||||||
speedSlider.value = 0.5
|
|
||||||
|
|
||||||
speedSlider.draw = function(speedSlider)
|
speedSlider.draw = function(speedSlider)
|
||||||
-- screen.drawRectangle(speedSlider.x, speedSlider.y, speedSlider.width, speedSlider.height, 0xFF0000, 0x0, " ")
|
-- screen.drawRectangle(speedSlider.x, speedSlider.y, speedSlider.width, speedSlider.height, 0xFF0000, 0x0, " ")
|
||||||
@ -440,7 +445,7 @@ speedSlider.eventHandler = function(workspace, speedSlider, e1, e2, e3, e4)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if tape and powerButton.pressed then
|
if tape and powerButton.pressed then
|
||||||
tapeConfig.speed = speedSlider.value
|
config.speed = speedSlider.value
|
||||||
|
|
||||||
updateCurrentTapeSpeed()
|
updateCurrentTapeSpeed()
|
||||||
end
|
end
|
||||||
@ -769,7 +774,7 @@ jog.eventHandler = function(workspace, jog, e1, e2, e3, e4, ...)
|
|||||||
invalidateJogIncrementUptime(computer.uptime())
|
invalidateJogIncrementUptime(computer.uptime())
|
||||||
|
|
||||||
-- Min seek speed is 100 msec & max is 10 sec
|
-- Min seek speed is 100 msec & max is 10 sec
|
||||||
invoke("seek", math.floor((0.1 + (10 * (1 - config.jogSpeed))) * sampleRate * direction))
|
invoke("seek", math.floor((0.1 + (10 * config.jogSpeed)) * sampleRate * direction))
|
||||||
|
|
||||||
workspace:draw()
|
workspace:draw()
|
||||||
end
|
end
|
||||||
@ -827,20 +832,30 @@ local function newKnob(x, y, value)
|
|||||||
return knob
|
return knob
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Jog adjust
|
||||||
|
local jogAdjustKnob = window:addChild(newKnob(61, 21, 0))
|
||||||
|
|
||||||
|
-- Gain
|
||||||
|
gainKnob = window:addChild(newKnob(72, 12, config.gain))
|
||||||
|
|
||||||
|
gainKnob.onValueChanged = function()
|
||||||
|
if not tape or not powerButton.pressed then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
config.gain = gainKnob.value
|
||||||
|
invoke("setVolume", config.gain)
|
||||||
|
saveConfig()
|
||||||
|
end
|
||||||
|
|
||||||
-- Jog speed
|
-- Jog speed
|
||||||
local jogSpeedKnob = window:addChild(newKnob(61, 21, config.jogSpeed))
|
local jogSpeedKnob = window:addChild(newKnob(72, 16, config.jogSpeed))
|
||||||
|
|
||||||
jogSpeedKnob.onValueChanged = function()
|
jogSpeedKnob.onValueChanged = function()
|
||||||
config.jogSpeed = jogSpeedKnob.value
|
config.jogSpeed = jogSpeedKnob.value
|
||||||
saveConfig()
|
saveConfig()
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Speed adjust
|
|
||||||
local speedAdjustKnob = window:addChild(newKnob(72, 12, 0))
|
|
||||||
|
|
||||||
-- Release start
|
|
||||||
local releaseStartKnob = window:addChild(newKnob(72, 16, 0))
|
|
||||||
|
|
||||||
-------------------------------- Pref/next tape button ------------------------------------------------
|
-------------------------------- Pref/next tape button ------------------------------------------------
|
||||||
|
|
||||||
local tapePrevButton = window:addChild(newRoundMiniButton(2, 30, 0x2D2D2D, 0xFFB600, 0x0F0F0F, 0xCC9200, "<<"))
|
local tapePrevButton = window:addChild(newRoundMiniButton(2, 30, 0x2D2D2D, 0xFFB600, 0x0F0F0F, 0xCC9200, "<<"))
|
||||||
@ -1202,10 +1217,10 @@ masterTempoButton.switchMode = true
|
|||||||
masterTempoButton:press()
|
masterTempoButton:press()
|
||||||
|
|
||||||
tempoButton.onTouch = function()
|
tempoButton.onTouch = function()
|
||||||
tapeConfig.speedIndex = tapeConfig.speedIndex + 1
|
config.speedIndex = config.speedIndex + 1
|
||||||
|
|
||||||
if tapeConfig.speedIndex > 3 then
|
if config.speedIndex > 3 then
|
||||||
tapeConfig.speedIndex = 1
|
config.speedIndex = 1
|
||||||
end
|
end
|
||||||
|
|
||||||
updateCurrentTapeSpeed()
|
updateCurrentTapeSpeed()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user