diff --git a/src/components/patterns/PickingLane.svelte b/src/components/patterns/PickingLane.svelte
new file mode 100644
index 0000000..c60bd79
--- /dev/null
+++ b/src/components/patterns/PickingLane.svelte
@@ -0,0 +1,116 @@
+
+
+
+ {#each Array(rows) as _, r}
+
{STRING_LABELS[r]}
+ {#each steps as step, c}
+
+
+ {#if step && step.string === r}
+ {glyph(step.marker)}
+ {/if}
+
+ {/each}
+ {/each}
+
+
+
diff --git a/src/components/views/PickingView.svelte b/src/components/views/PickingView.svelte
new file mode 100644
index 0000000..42faddb
--- /dev/null
+++ b/src/components/views/PickingView.svelte
@@ -0,0 +1,158 @@
+
+
+
+
+
+
+
+ {#if drill.chordLabels && drill.chordLabels.length}
+
+
Chords{drill.chordLabels.length > 1 ? ' (per bar)' : ''}
+
+ {#each drill.chordLabels as c}
+ {c}
+ {/each}
+
+
+ {/if}
+
+ {#if drill.variants.length > 1}
+
+
Variant
+
+ {#each drill.variants as v}
+
+ {/each}
+
+
+ {/if}
+
+
+
diff --git a/src/components/views/StrumView.svelte b/src/components/views/StrumView.svelte
index 6ed3c4a..d76135b 100644
--- a/src/components/views/StrumView.svelte
+++ b/src/components/views/StrumView.svelte
@@ -1,7 +1,7 @@