ScaleToise: main note screen
This commit is contained in:
parent
0dec54f2d0
commit
252cb1521e
2 changed files with 41 additions and 10 deletions
|
@ -12,13 +12,17 @@ Item {
|
||||||
// note or note + 12 * octave
|
// note or note + 12 * octave
|
||||||
property int note: 1
|
property int note: 1
|
||||||
|
|
||||||
property variant notes_fr: ["do", "do#", "ré", "mib", "mi", "fa", "fa#", "sol", "sol#", "la", "sib", "si"]
|
property variant notes_fr: [
|
||||||
|
"do", "do#", "ré", "mib", "mi", "fa", "fa#", "sol", "sol#", "la", "sib", "si"]
|
||||||
property variant notes_en: [
|
property variant notes_en: [
|
||||||
"C", "C#", "D", "Eb", "E", "F", "F#", "G", "G#", "A", "Bb", "B"
|
"C", "C#", "D", "Eb", "E", "F", "F#", "G", "G#", "A", "Bb", "B"]
|
||||||
]
|
|
||||||
property variant notes: [notes_en, notes_fr]
|
property variant notes: [notes_en, notes_fr]
|
||||||
property int notes_style: 0
|
property int notes_style: 0
|
||||||
|
|
||||||
|
property color colorAltered: "#40888888"
|
||||||
|
|
||||||
|
property int h_margin: Math.max(height / 8, main_note.border_d)
|
||||||
|
|
||||||
property int nb_notes: 12
|
property int nb_notes: 12
|
||||||
/// current note is on the middle
|
/// current note is on the middle
|
||||||
property double position: note + (nb_notes + 1) / 2
|
property double position: note + (nb_notes + 1) / 2
|
||||||
|
@ -30,6 +34,10 @@ Item {
|
||||||
return notes[notes_style][i];
|
return notes[notes_style][i];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function isAltered(i) {
|
||||||
|
return (i < 4 && (i & 1)) || (i > 5 && !(i & 1))
|
||||||
|
}
|
||||||
|
|
||||||
Behavior on position {
|
Behavior on position {
|
||||||
NumberAnimation {
|
NumberAnimation {
|
||||||
duration: 200
|
duration: 200
|
||||||
|
@ -44,6 +52,8 @@ Item {
|
||||||
anchors.leftMargin: - cellWidth * delta
|
anchors.leftMargin: - cellWidth * delta
|
||||||
anchors.bottom: parent.bottom
|
anchors.bottom: parent.bottom
|
||||||
anchors.right: parent.right
|
anchors.right: parent.right
|
||||||
|
anchors.topMargin: h_margin
|
||||||
|
anchors.bottomMargin: h_margin
|
||||||
property double cellWidth: parent.width / nb_notes
|
property double cellWidth: parent.width / nb_notes
|
||||||
|
|
||||||
Repeater {
|
Repeater {
|
||||||
|
@ -52,11 +62,13 @@ Item {
|
||||||
width: toise.cellWidth
|
width: toise.cellWidth
|
||||||
height: parent.height
|
height: parent.height
|
||||||
border.width: 1
|
border.width: 1
|
||||||
|
property int note: (index + nb_notes + first_note) % nb_notes
|
||||||
|
color: isAltered(note) ? colorAltered : "transparent"
|
||||||
|
|
||||||
Text {
|
Text {
|
||||||
anchors.horizontalCenter: parent.horizontalCenter
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
text: note_name((index + nb_notes + first_note) % nb_notes)
|
text: note_name(note)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -66,6 +78,22 @@ Item {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
onClicked: note = Math.random() * 100
|
onClicked: note = Math.random() * 100
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Screen for actual note
|
||||||
|
Rectangle {
|
||||||
|
id: main_note
|
||||||
|
y: 0
|
||||||
|
x: toise.cellWidth * 5.5 - border_d
|
||||||
|
width: toise.cellWidth + border_d * 2
|
||||||
|
height: parent.height
|
||||||
|
|
||||||
|
property int border_d: 10
|
||||||
|
|
||||||
|
color: "transparent"
|
||||||
|
border.width: border_d
|
||||||
|
border.color: "#a0777777"
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
onPositionChanged: {
|
onPositionChanged: {
|
||||||
console.log("note " + note_name(note % nb_notes) + " pos " + position + " first note " + first_note + " delta " + delta)
|
console.log("note " + note_name(note % nb_notes) + " pos " + position + " first note " + first_note + " delta " + delta)
|
||||||
|
|
|
@ -12,22 +12,25 @@ Item {
|
||||||
property QtObject theme
|
property QtObject theme
|
||||||
|
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
property int h_free: parent.height - parent.width / 2
|
property int h_margin: (height - meter.height - toise.height) / 3
|
||||||
|
|
||||||
CircleMeter {
|
CircleMeter {
|
||||||
id: meter
|
id: meter
|
||||||
theme: parent.theme
|
theme: parent.theme
|
||||||
y: (h_free - toise.height) / 3
|
|
||||||
width: Math.min(parent.width, parent.height * 2)
|
anchors.top: parent.top
|
||||||
|
anchors.topMargin: h_margin
|
||||||
|
|
||||||
|
width: parent.width
|
||||||
height: width / 2
|
height: width / 2
|
||||||
}
|
}
|
||||||
|
|
||||||
ScaleToise {
|
ScaleToise {
|
||||||
id: toise
|
id: toise
|
||||||
anchors.bottom: parent.bottom
|
anchors.top: meter.bottom
|
||||||
|
anchors.topMargin: h_margin
|
||||||
anchors.left: parent.left
|
anchors.left: parent.left
|
||||||
width: parent.width
|
width: parent.width
|
||||||
height: Math.min(h_free, width / 12)
|
height: width / 10
|
||||||
anchors.bottomMargin: (h_free - height) / 3
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue