Skip to content

Commit

Permalink
add basic length shortcuts
Browse files Browse the repository at this point in the history
  • Loading branch information
hlorenzi committed Feb 4, 2021
1 parent 89331d6 commit 8fc7a94
Showing 1 changed file with 77 additions and 19 deletions.
96 changes: 77 additions & 19 deletions src/timeline/state_keyDown.ts
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,39 @@ export function keyDown(data: Editor.WorkData, key: string)
break
}

case "c":
{
if (data.state.keysDown.has("control"))
Editor.selectionCopy(data)

break
}

case "x":
{
if (data.state.keysDown.has("control"))
{
Editor.selectionCopy(data)
Editor.selectionDelete(data)
Project.splitUndoPoint()
Project.addUndoPoint("cut")
}

break
}

case "v":
{
if (data.state.keysDown.has("control"))
{
Editor.paste(data)
Project.splitUndoPoint()
Project.addUndoPoint("copy")
}

break
}

case "arrowright":
case "arrowleft":
{
Expand Down Expand Up @@ -95,36 +128,34 @@ export function keyDown(data: Editor.WorkData, key: string)
break
}

case "c":
case "h":
{
if (data.state.keysDown.has("control"))
Editor.selectionCopy(data)
handleLengthChange(data, 0)
break
}

case "j":
{
handleLengthChange(data, 1)
break
}

case "x":
case "k":
{
if (data.state.keysDown.has("control"))
{
Editor.selectionCopy(data)
Editor.selectionDelete(data)
Project.splitUndoPoint()
Project.addUndoPoint("cut")
}
handleLengthChange(data, 2)
break
}

case "l":
{
handleLengthChange(data, 3)
break
}

case "v":
case ";":
case ":":
{
if (data.state.keysDown.has("control"))
{
Editor.paste(data)
Project.splitUndoPoint()
Project.addUndoPoint("copy")
}

handleLengthChange(data, 4)
break
}
}
Expand Down Expand Up @@ -464,4 +495,31 @@ function handleNumber(data: Editor.WorkData, degree: number)
const chroma = key.chromaForDegree(degree)
Editor.insertNote(data, time, chroma)
}
}


function handleLengthChange(data: Editor.WorkData, lengthIndex: number)
{
const lengths = [
new Rational(1, 16),
new Rational(1, 8),
new Rational(1, 4),
new Rational(1, 2),
new Rational(1, 1),
]

const length = lengths[lengthIndex]

modifySelectedElems(data, (elem) =>
{
if (elem.type == "note" || elem.type == "chord")
{
const newRange = Range.fromStartDuration(elem.range.start, length)
return Project.elemModify(elem, { range: newRange })
}
else
return elem
})

data.state.needsKeyFinish = true
}

0 comments on commit 8fc7a94

Please sign in to comment.