Repository files navigation

fairykey-icon-dark-small-crop

Fairy Key: a virtual piano sheet scroller

Fairy Key is a virtual piano sheet reading tool for practicing playing piano using QWERTY with features such as auto-scroll, note highlighting, a library to organize sheets, and more!

Features

  • Auto-scroll: Notes are highlighted as you play and the sheet scrolls automatically line by line
  • Unfocused Keyboard Input: During Play Mode, Fairy Key is passed keyboard inputs while not focused so you can play along in your preferred virtual piano app (Roblox, FL Studio, etc.) while following sheets in Fairy Key!
  • Library: Create, organize, and share sheets
    • Sheets are stored as .txt files with optional metadata such as the songs Title, Artist, and sheet creator.
    • Folder support
  • Pin mode: Keep Fairy Key on top of other applications while you play
  • Noob mode: Non-shifted notes count as correct notes
  • Transpose support
  • Resize window to fit sheet support
  • Restart the sheet and scroll to the top at any time

Installation

  1. Download the latest release directly from the official website or from Github's Releases page
  2. Extract the ZIP anywhere you like
  3. Run FairyKey.exe

Currently only Windows 10 and 11 are supported and .NET 8.0 runtime is required to run.

Usage

  1. Launch FairyKey.exe
  2. Use the ☰+ button to create a new sheet
  3. Follow the Fairy Key Sheet Format Guide
  4. After saving a sheet, it will appear in the Library panel
  5. Click a sheet to load it
  6. Press the Play button at the top to activate Play Mode
  7. (Recommended) enable Pin Mode from the ☰ menu to overlay Fairy Key on top of your virtual piano application
  8. Switch to your virtual piano application and play along with the sheet!

Applications running as Admin won't pass input to Fairy Key unless Fairy Key is also running as Admin (e.g. Roblox opened as Admin won't pass inputs to Fairy Key)

Shortcuts

  • Ctrl + R: Restarts the current sheet during Play Mode
  • Ctrl + Mousewheel: Scroll up and down to adjust font size (zoom)

Importing multiple sheets

Fairy Key comes with an example Sheets folder, which is located in the root directory of FairyKey.exe. This folder is also automatically created if it does not exist. Additional folders can be used within the Sheets folder for further organization (currently a folder depth of 1 is supported).

  1. Place your sheet .txt file(s) in the Sheets folder
  2. Launch FairyKey.exe
  3. Sheets will appear in the Library

Fairy Key can automatically detect and load new single sheets without restarting the application.


Fairy Key Sheet Format Guide

Fairy Key reads sheets from user-provided .txt files. In addition to virtual piano notation, sheets can include metadata, such as the Title, Artist, and creator of the sheet, as well as transposition data between lines. They follow the following format:

title=Clair De Lune
artist=Claude Debussy creator=Tevins
+1
[uo] [fh] [sf] [iO] [ad] [sf] [ad] -
[uo] [ps] [ad] [ps] f s [yi] [oa] [ps] [oa] [tyi] p a p d p [ryio] p o [ety] i o i [Wryu]

Adding Metadata

In order for Fairy Key to recognize metadata, the first three lines of any sheet can optionally include the following: Title, Artist, and sheet creator.

The metadata format (first 3 lines of the .txt file) must follow the following formatting:

title=
artist=
creator=

Metadata is optional and not required. If a sheet doesn't include metadata, Fairy Key will assume the sheet's title based on its filename.

Adding Transposition

To add a transposition indicator in a song, simply add it as a single line starting either with + or - followed by the amount:

+2

Without specifying, the default transposition is always 0. Transpositions can be added anywhere between or before notation lines.

Additional formats also supported:

Transpose +3
transposition -3
Transposition is -3
Transpose by 3
*No Transposition*
-3 Octave 3 (+9)
-3 (transpose 6)

Adding Notes

Lastly, notes can be added after the metadata freely using virtual piano notation. Fairy Key recognizes playable notes and ignores non-playable notes such as spaces. Currently supported formats for chords are [ ] and - for spaces/pauses.

Demos

fairykey-demo-2.mp4
fairykey-demo.mp4
Demo by Yakku played in Visual Pianos Demo by tevin_vr played in Visual Pianos

Building

Fairy Key is a WPF application built with Visual Studio 2022 using .NET 8.0. To build and run the project locally:

  1. Clone the repository
git clone https://github.com/FairyKey/FairyKey.git
  1. Go into the cloned directory and install dependencies
cd fairykey
dotnet restore
  1. Build the project
dotnet build

Launching the project can be done with the created FairyKey.sln file.

Third-Party Libraries

Fairy Key uses the following third-party libraries:

LibraryLicenseSource
Material.Icons.WPFMITNuGet
MouseKeyHookMITNuGet

Full license texts are included in THIRD_PARTY_LICENSES.md.

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

fairykey-icon-dark-small-crop

Fairy Key: a virtual piano sheet scroller

Fairy Key is a virtual piano sheet reading tool for practicing playing piano using QWERTY with features such as auto-scroll, note highlighting, a library to organize sheets, and more!

Features

  • Auto-scroll: Notes are highlighted as you play and the sheet scrolls automatically line by line
  • Unfocused Keyboard Input: During Play Mode, Fairy Key is passed keyboard inputs while not focused so you can play along in your preferred virtual piano app (Roblox, FL Studio, etc.) while following sheets in Fairy Key!
  • Library: Create, organize, and share sheets
    • Sheets are stored as .txt files with optional metadata such as the songs Title, Artist, and sheet creator.
    • Folder support
  • Pin mode: Keep Fairy Key on top of other applications while you play
  • Noob mode: Non-shifted notes count as correct notes
  • Transpose support
  • Resize window to fit sheet support
  • Restart the sheet and scroll to the top at any time

Installation

  1. Download the latest release directly from the official website or from Github's Releases page
  2. Extract the ZIP anywhere you like
  3. Run FairyKey.exe

Currently only Windows 10 and 11 are supported and .NET 8.0 runtime is required to run.

Usage

  1. Launch FairyKey.exe
  2. Use the ☰+ button to create a new sheet
  3. Follow the Fairy Key Sheet Format Guide
  4. After saving a sheet, it will appear in the Library panel
  5. Click a sheet to load it
  6. Press the Play button at the top to activate Play Mode
  7. (Recommended) enable Pin Mode from the ☰ menu to overlay Fairy Key on top of your virtual piano application
  8. Switch to your virtual piano application and play along with the sheet!

Applications running as Admin won't pass input to Fairy Key unless Fairy Key is also running as Admin (e.g. Roblox opened as Admin won't pass inputs to Fairy Key)

Shortcuts

  • Ctrl + R: Restarts the current sheet during Play Mode
  • Ctrl + Mousewheel: Scroll up and down to adjust font size (zoom)

Importing multiple sheets

Fairy Key comes with an example Sheets folder, which is located in the root directory of FairyKey.exe. This folder is also automatically created if it does not exist. Additional folders can be used within the Sheets folder for further organization (currently a folder depth of 1 is supported).

  1. Place your sheet .txt file(s) in the Sheets folder
  2. Launch FairyKey.exe
  3. Sheets will appear in the Library

Fairy Key can automatically detect and load new single sheets without restarting the application.


Fairy Key Sheet Format Guide

Fairy Key reads sheets from user-provided .txt files. In addition to virtual piano notation, sheets can include metadata, such as the Title, Artist, and creator of the sheet, as well as transposition data between lines. They follow the following format:

title=Clair De Lune
artist=Claude Debussy creator=Tevins
+1
[uo] [fh] [sf] [iO] [ad] [sf] [ad] -
[uo] [ps] [ad] [ps] f s [yi] [oa] [ps] [oa] [tyi] p a p d p [ryio] p o [ety] i o i [Wryu]

Adding Metadata

In order for Fairy Key to recognize metadata, the first three lines of any sheet can optionally include the following: Title, Artist, and sheet creator.

The metadata format (first 3 lines of the .txt file) must follow the following formatting:

title=
artist=
creator=

Metadata is optional and not required. If a sheet doesn't include metadata, Fairy Key will assume the sheet's title based on its filename.

Adding Transposition

To add a transposition indicator in a song, simply add it as a single line starting either with + or - followed by the amount:

+2

Without specifying, the default transposition is always 0. Transpositions can be added anywhere between or before notation lines.

Additional formats also supported:

Transpose +3
transposition -3
Transposition is -3
Transpose by 3
*No Transposition*
-3 Octave 3 (+9)
-3 (transpose 6)

Adding Notes

Lastly, notes can be added after the metadata freely using virtual piano notation. Fairy Key recognizes playable notes and ignores non-playable notes such as spaces. Currently supported formats for chords are [ ] and - for spaces/pauses.

Demos

fairykey-demo-2.mp4
fairykey-demo.mp4
Demo by Yakku played in Visual Pianos Demo by tevin_vr played in Visual Pianos

Building

Fairy Key is a WPF application built with Visual Studio 2022 using .NET 8.0. To build and run the project locally:

  1. Clone the repository
git clone https://github.com/FairyKey/FairyKey.git
  1. Go into the cloned directory and install dependencies
cd fairykey
dotnet restore
  1. Build the project
dotnet build

Launching the project can be done with the created FairyKey.sln file.

Third-Party Libraries

Fairy Key uses the following third-party libraries:

LibraryLicenseSource
Material.Icons.WPFMITNuGet
MouseKeyHookMITNuGet

Full license texts are included in THIRD_PARTY_LICENSES.md.

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

fairykey-icon-dark-small-crop

Fairy Key: a virtual piano sheet scroller

Fairy Key is a virtual piano sheet reading tool for practicing playing piano using QWERTY with features such as auto-scroll, note highlighting, a library to organize sheets, and more!

Features

  • Auto-scroll: Notes are highlighted as you play and the sheet scrolls automatically line by line
  • Unfocused Keyboard Input: During Play Mode, Fairy Key is passed keyboard inputs while not focused so you can play along in your preferred virtual piano app (Roblox, FL Studio, etc.) while following sheets in Fairy Key!
  • Library: Create, organize, and share sheets
    • Sheets are stored as .txt files with optional metadata such as the songs Title, Artist, and sheet creator.
    • Folder support
  • Pin mode: Keep Fairy Key on top of other applications while you play
  • Noob mode: Non-shifted notes count as correct notes
  • Transpose support
  • Resize window to fit sheet support
  • Restart the sheet and scroll to the top at any time

Installation

  1. Download the latest release directly from the official website or from Github's Releases page
  2. Extract the ZIP anywhere you like
  3. Run FairyKey.exe

Currently only Windows 10 and 11 are supported and .NET 8.0 runtime is required to run.

Usage

  1. Launch FairyKey.exe
  2. Use the ☰+ button to create a new sheet
  3. Follow the Fairy Key Sheet Format Guide
  4. After saving a sheet, it will appear in the Library panel
  5. Click a sheet to load it
  6. Press the Play button at the top to activate Play Mode
  7. (Recommended) enable Pin Mode from the ☰ menu to overlay Fairy Key on top of your virtual piano application
  8. Switch to your virtual piano application and play along with the sheet!

Applications running as Admin won't pass input to Fairy Key unless Fairy Key is also running as Admin (e.g. Roblox opened as Admin won't pass inputs to Fairy Key)

Shortcuts

  • Ctrl + R: Restarts the current sheet during Play Mode
  • Ctrl + Mousewheel: Scroll up and down to adjust font size (zoom)

Importing multiple sheets

Fairy Key comes with an example Sheets folder, which is located in the root directory of FairyKey.exe. This folder is also automatically created if it does not exist. Additional folders can be used within the Sheets folder for further organization (currently a folder depth of 1 is supported).

  1. Place your sheet .txt file(s) in the Sheets folder
  2. Launch FairyKey.exe
  3. Sheets will appear in the Library

Fairy Key can automatically detect and load new single sheets without restarting the application.


Fairy Key Sheet Format Guide

Fairy Key reads sheets from user-provided .txt files. In addition to virtual piano notation, sheets can include metadata, such as the Title, Artist, and creator of the sheet, as well as transposition data between lines. They follow the following format:

title=Clair De Lune
artist=Claude Debussy creator=Tevins
+1
[uo] [fh] [sf] [iO] [ad] [sf] [ad] -
[uo] [ps] [ad] [ps] f s [yi] [oa] [ps] [oa] [tyi] p a p d p [ryio] p o [ety] i o i [Wryu]

Adding Metadata

In order for Fairy Key to recognize metadata, the first three lines of any sheet can optionally include the following: Title, Artist, and sheet creator.

The metadata format (first 3 lines of the .txt file) must follow the following formatting:

title=
artist=
creator=

Metadata is optional and not required. If a sheet doesn't include metadata, Fairy Key will assume the sheet's title based on its filename.

Adding Transposition

To add a transposition indicator in a song, simply add it as a single line starting either with + or - followed by the amount:

+2

Without specifying, the default transposition is always 0. Transpositions can be added anywhere between or before notation lines.

Additional formats also supported:

Transpose +3
transposition -3
Transposition is -3
Transpose by 3
*No Transposition*
-3 Octave 3 (+9)
-3 (transpose 6)

Adding Notes

Lastly, notes can be added after the metadata freely using virtual piano notation. Fairy Key recognizes playable notes and ignores non-playable notes such as spaces. Currently supported formats for chords are [ ] and - for spaces/pauses.

Demos

fairykey-demo-2.mp4
fairykey-demo.mp4
Demo by Yakku played in Visual Pianos Demo by tevin_vr played in Visual Pianos

Building

Fairy Key is a WPF application built with Visual Studio 2022 using .NET 8.0. To build and run the project locally:

  1. Clone the repository
git clone https://github.com/FairyKey/FairyKey.git
  1. Go into the cloned directory and install dependencies
cd fairykey
dotnet restore
  1. Build the project
dotnet build

Launching the project can be done with the created FairyKey.sln file.

Third-Party Libraries

Fairy Key uses the following third-party libraries:

LibraryLicenseSource
Material.Icons.WPFMITNuGet
MouseKeyHookMITNuGet

Full license texts are included in THIRD_PARTY_LICENSES.md.

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

fairykey-icon-dark-small-crop

Fairy Key: a virtual piano sheet scroller

Fairy Key is a virtual piano sheet reading tool for practicing playing piano using QWERTY with features such as auto-scroll, note highlighting, a library to organize sheets, and more!

Features

  • Auto-scroll: Notes are highlighted as you play and the sheet scrolls automatically line by line
  • Unfocused Keyboard Input: During Play Mode, Fairy Key is passed keyboard inputs while not focused so you can play along in your preferred virtual piano app (Roblox, FL Studio, etc.) while following sheets in Fairy Key!
  • Library: Create, organize, and share sheets
    • Sheets are stored as .txt files with optional metadata such as the songs Title, Artist, and sheet creator.
    • Folder support
  • Pin mode: Keep Fairy Key on top of other applications while you play
  • Noob mode: Non-shifted notes count as correct notes
  • Transpose support
  • Resize window to fit sheet support
  • Restart the sheet and scroll to the top at any time

Installation

  1. Download the latest release directly from the official website or from Github's Releases page
  2. Extract the ZIP anywhere you like
  3. Run FairyKey.exe

Currently only Windows 10 and 11 are supported and .NET 8.0 runtime is required to run.

Usage

  1. Launch FairyKey.exe
  2. Use the ☰+ button to create a new sheet
  3. Follow the Fairy Key Sheet Format Guide
  4. After saving a sheet, it will appear in the Library panel
  5. Click a sheet to load it
  6. Press the Play button at the top to activate Play Mode
  7. (Recommended) enable Pin Mode from the ☰ menu to overlay Fairy Key on top of your virtual piano application
  8. Switch to your virtual piano application and play along with the sheet!

Applications running as Admin won't pass input to Fairy Key unless Fairy Key is also running as Admin (e.g. Roblox opened as Admin won't pass inputs to Fairy Key)

Shortcuts

  • Ctrl + R: Restarts the current sheet during Play Mode
  • Ctrl + Mousewheel: Scroll up and down to adjust font size (zoom)

Importing multiple sheets

Fairy Key comes with an example Sheets folder, which is located in the root directory of FairyKey.exe. This folder is also automatically created if it does not exist. Additional folders can be used within the Sheets folder for further organization (currently a folder depth of 1 is supported).

  1. Place your sheet .txt file(s) in the Sheets folder
  2. Launch FairyKey.exe
  3. Sheets will appear in the Library

Fairy Key can automatically detect and load new single sheets without restarting the application.


Fairy Key Sheet Format Guide

Fairy Key reads sheets from user-provided .txt files. In addition to virtual piano notation, sheets can include metadata, such as the Title, Artist, and creator of the sheet, as well as transposition data between lines. They follow the following format:

title=Clair De Lune
artist=Claude Debussy creator=Tevins
+1
[uo] [fh] [sf] [iO] [ad] [sf] [ad] -
[uo] [ps] [ad] [ps] f s [yi] [oa] [ps] [oa] [tyi] p a p d p [ryio] p o [ety] i o i [Wryu]

Adding Metadata

In order for Fairy Key to recognize metadata, the first three lines of any sheet can optionally include the following: Title, Artist, and sheet creator.

The metadata format (first 3 lines of the .txt file) must follow the following formatting:

title=
artist=
creator=

Metadata is optional and not required. If a sheet doesn't include metadata, Fairy Key will assume the sheet's title based on its filename.

Adding Transposition

To add a transposition indicator in a song, simply add it as a single line starting either with + or - followed by the amount:

+2

Without specifying, the default transposition is always 0. Transpositions can be added anywhere between or before notation lines.

Additional formats also supported:

Transpose +3
transposition -3
Transposition is -3
Transpose by 3
*No Transposition*
-3 Octave 3 (+9)
-3 (transpose 6)

Adding Notes

Lastly, notes can be added after the metadata freely using virtual piano notation. Fairy Key recognizes playable notes and ignores non-playable notes such as spaces. Currently supported formats for chords are [ ] and - for spaces/pauses.

Demos

fairykey-demo-2.mp4
fairykey-demo.mp4
Demo by Yakku played in Visual Pianos Demo by tevin_vr played in Visual Pianos

Building

Fairy Key is a WPF application built with Visual Studio 2022 using .NET 8.0. To build and run the project locally:

  1. Clone the repository
git clone https://github.com/FairyKey/FairyKey.git
  1. Go into the cloned directory and install dependencies
cd fairykey
dotnet restore
  1. Build the project
dotnet build

Launching the project can be done with the created FairyKey.sln file.

Third-Party Libraries

Fairy Key uses the following third-party libraries:

LibraryLicenseSource
Material.Icons.WPFMITNuGet
MouseKeyHookMITNuGet

Full license texts are included in THIRD_PARTY_LICENSES.md.

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

fairykey-icon-dark-small-crop

Fairy Key: a virtual piano sheet scroller

Fairy Key is a virtual piano sheet reading tool for practicing playing piano using QWERTY with features such as auto-scroll, note highlighting, a library to organize sheets, and more!

Features

  • Auto-scroll: Notes are highlighted as you play and the sheet scrolls automatically line by line
  • Unfocused Keyboard Input: During Play Mode, Fairy Key is passed keyboard inputs while not focused so you can play along in your preferred virtual piano app (Roblox, FL Studio, etc.) while following sheets in Fairy Key!
  • Library: Create, organize, and share sheets
    • Sheets are stored as .txt files with optional metadata such as the songs Title, Artist, and sheet creator.
    • Folder support
  • Pin mode: Keep Fairy Key on top of other applications while you play
  • Noob mode: Non-shifted notes count as correct notes
  • Transpose support
  • Resize window to fit sheet support
  • Restart the sheet and scroll to the top at any time

Installation

  1. Download the latest release directly from the official website or from Github's Releases page
  2. Extract the ZIP anywhere you like
  3. Run FairyKey.exe

Currently only Windows 10 and 11 are supported and .NET 8.0 runtime is required to run.

Usage

  1. Launch FairyKey.exe
  2. Use the ☰+ button to create a new sheet
  3. Follow the Fairy Key Sheet Format Guide
  4. After saving a sheet, it will appear in the Library panel
  5. Click a sheet to load it
  6. Press the Play button at the top to activate Play Mode
  7. (Recommended) enable Pin Mode from the ☰ menu to overlay Fairy Key on top of your virtual piano application
  8. Switch to your virtual piano application and play along with the sheet!

Applications running as Admin won't pass input to Fairy Key unless Fairy Key is also running as Admin (e.g. Roblox opened as Admin won't pass inputs to Fairy Key)

Shortcuts

  • Ctrl + R: Restarts the current sheet during Play Mode
  • Ctrl + Mousewheel: Scroll up and down to adjust font size (zoom)

Importing multiple sheets

Fairy Key comes with an example Sheets folder, which is located in the root directory of FairyKey.exe. This folder is also automatically created if it does not exist. Additional folders can be used within the Sheets folder for further organization (currently a folder depth of 1 is supported).

  1. Place your sheet .txt file(s) in the Sheets folder
  2. Launch FairyKey.exe
  3. Sheets will appear in the Library

Fairy Key can automatically detect and load new single sheets without restarting the application.


Fairy Key Sheet Format Guide

Fairy Key reads sheets from user-provided .txt files. In addition to virtual piano notation, sheets can include metadata, such as the Title, Artist, and creator of the sheet, as well as transposition data between lines. They follow the following format:

title=Clair De Lune
artist=Claude Debussy creator=Tevins
+1
[uo] [fh] [sf] [iO] [ad] [sf] [ad] -
[uo] [ps] [ad] [ps] f s [yi] [oa] [ps] [oa] [tyi] p a p d p [ryio] p o [ety] i o i [Wryu]

Adding Metadata

In order for Fairy Key to recognize metadata, the first three lines of any sheet can optionally include the following: Title, Artist, and sheet creator.

The metadata format (first 3 lines of the .txt file) must follow the following formatting:

title=
artist=
creator=

Metadata is optional and not required. If a sheet doesn't include metadata, Fairy Key will assume the sheet's title based on its filename.

Adding Transposition

To add a transposition indicator in a song, simply add it as a single line starting either with + or - followed by the amount:

+2

Without specifying, the default transposition is always 0. Transpositions can be added anywhere between or before notation lines.

Additional formats also supported:

Transpose +3
transposition -3
Transposition is -3
Transpose by 3
*No Transposition*
-3 Octave 3 (+9)
-3 (transpose 6)

Adding Notes

Lastly, notes can be added after the metadata freely using virtual piano notation. Fairy Key recognizes playable notes and ignores non-playable notes such as spaces. Currently supported formats for chords are [ ] and - for spaces/pauses.

Demos

fairykey-demo-2.mp4
fairykey-demo.mp4
Demo by Yakku played in Visual Pianos Demo by tevin_vr played in Visual Pianos

Building

Fairy Key is a WPF application built with Visual Studio 2022 using .NET 8.0. To build and run the project locally:

  1. Clone the repository
git clone https://github.com/FairyKey/FairyKey.git
  1. Go into the cloned directory and install dependencies
cd fairykey
dotnet restore
  1. Build the project
dotnet build

Launching the project can be done with the created FairyKey.sln file.

Third-Party Libraries

Fairy Key uses the following third-party libraries:

LibraryLicenseSource
Material.Icons.WPFMITNuGet
MouseKeyHookMITNuGet

Full license texts are included in THIRD_PARTY_LICENSES.md.

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

fairykey-icon-dark-small-crop

Fairy Key: a virtual piano sheet scroller

Fairy Key is a virtual piano sheet reading tool for practicing playing piano using QWERTY with features such as auto-scroll, note highlighting, a library to organize sheets, and more!

Features

  • Auto-scroll: Notes are highlighted as you play and the sheet scrolls automatically line by line
  • Unfocused Keyboard Input: During Play Mode, Fairy Key is passed keyboard inputs while not focused so you can play along in your preferred virtual piano app (Roblox, FL Studio, etc.) while following sheets in Fairy Key!
  • Library: Create, organize, and share sheets
    • Sheets are stored as .txt files with optional metadata such as the songs Title, Artist, and sheet creator.
    • Folder support
  • Pin mode: Keep Fairy Key on top of other applications while you play
  • Noob mode: Non-shifted notes count as correct notes
  • Transpose support
  • Resize window to fit sheet support
  • Restart the sheet and scroll to the top at any time

Installation

  1. Download the latest release directly from the official website or from Github's Releases page
  2. Extract the ZIP anywhere you like
  3. Run FairyKey.exe

Currently only Windows 10 and 11 are supported and .NET 8.0 runtime is required to run.

Usage

  1. Launch FairyKey.exe
  2. Use the ☰+ button to create a new sheet
  3. Follow the Fairy Key Sheet Format Guide
  4. After saving a sheet, it will appear in the Library panel
  5. Click a sheet to load it
  6. Press the Play button at the top to activate Play Mode
  7. (Recommended) enable Pin Mode from the ☰ menu to overlay Fairy Key on top of your virtual piano application
  8. Switch to your virtual piano application and play along with the sheet!

Applications running as Admin won't pass input to Fairy Key unless Fairy Key is also running as Admin (e.g. Roblox opened as Admin won't pass inputs to Fairy Key)

Shortcuts

  • Ctrl + R: Restarts the current sheet during Play Mode
  • Ctrl + Mousewheel: Scroll up and down to adjust font size (zoom)

Importing multiple sheets

Fairy Key comes with an example Sheets folder, which is located in the root directory of FairyKey.exe. This folder is also automatically created if it does not exist. Additional folders can be used within the Sheets folder for further organization (currently a folder depth of 1 is supported).

  1. Place your sheet .txt file(s) in the Sheets folder
  2. Launch FairyKey.exe
  3. Sheets will appear in the Library

Fairy Key can automatically detect and load new single sheets without restarting the application.


Fairy Key Sheet Format Guide

Fairy Key reads sheets from user-provided .txt files. In addition to virtual piano notation, sheets can include metadata, such as the Title, Artist, and creator of the sheet, as well as transposition data between lines. They follow the following format:

title=Clair De Lune
artist=Claude Debussy creator=Tevins
+1
[uo] [fh] [sf] [iO] [ad] [sf] [ad] -
[uo] [ps] [ad] [ps] f s [yi] [oa] [ps] [oa] [tyi] p a p d p [ryio] p o [ety] i o i [Wryu]

Adding Metadata

In order for Fairy Key to recognize metadata, the first three lines of any sheet can optionally include the following: Title, Artist, and sheet creator.

The metadata format (first 3 lines of the .txt file) must follow the following formatting:

title=
artist=
creator=

Metadata is optional and not required. If a sheet doesn't include metadata, Fairy Key will assume the sheet's title based on its filename.

Adding Transposition

To add a transposition indicator in a song, simply add it as a single line starting either with + or - followed by the amount:

+2

Without specifying, the default transposition is always 0. Transpositions can be added anywhere between or before notation lines.

Additional formats also supported:

Transpose +3
transposition -3
Transposition is -3
Transpose by 3
*No Transposition*
-3 Octave 3 (+9)
-3 (transpose 6)

Adding Notes

Lastly, notes can be added after the metadata freely using virtual piano notation. Fairy Key recognizes playable notes and ignores non-playable notes such as spaces. Currently supported formats for chords are [ ] and - for spaces/pauses.

Demos

fairykey-demo-2.mp4
fairykey-demo.mp4
Demo by Yakku played in Visual Pianos Demo by tevin_vr played in Visual Pianos

Building

Fairy Key is a WPF application built with Visual Studio 2022 using .NET 8.0. To build and run the project locally:

  1. Clone the repository
git clone https://github.com/FairyKey/FairyKey.git
  1. Go into the cloned directory and install dependencies
cd fairykey
dotnet restore
  1. Build the project
dotnet build

Launching the project can be done with the created FairyKey.sln file.

Third-Party Libraries

Fairy Key uses the following third-party libraries:

LibraryLicenseSource
Material.Icons.WPFMITNuGet
MouseKeyHookMITNuGet

Full license texts are included in THIRD_PARTY_LICENSES.md.

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

fairykey-icon-dark-small-crop

Fairy Key: a virtual piano sheet scroller

Fairy Key is a virtual piano sheet reading tool for practicing playing piano using QWERTY with features such as auto-scroll, note highlighting, a library to organize sheets, and more!

Features

  • Auto-scroll: Notes are highlighted as you play and the sheet scrolls automatically line by line
  • Unfocused Keyboard Input: During Play Mode, Fairy Key is passed keyboard inputs while not focused so you can play along in your preferred virtual piano app (Roblox, FL Studio, etc.) while following sheets in Fairy Key!
  • Library: Create, organize, and share sheets
    • Sheets are stored as .txt files with optional metadata such as the songs Title, Artist, and sheet creator.
    • Folder support
  • Pin mode: Keep Fairy Key on top of other applications while you play
  • Noob mode: Non-shifted notes count as correct notes
  • Transpose support
  • Resize window to fit sheet support
  • Restart the sheet and scroll to the top at any time

Installation

  1. Download the latest release directly from the official website or from Github's Releases page
  2. Extract the ZIP anywhere you like
  3. Run FairyKey.exe

Currently only Windows 10 and 11 are supported and .NET 8.0 runtime is required to run.

Usage

  1. Launch FairyKey.exe
  2. Use the ☰+ button to create a new sheet
  3. Follow the Fairy Key Sheet Format Guide
  4. After saving a sheet, it will appear in the Library panel
  5. Click a sheet to load it
  6. Press the Play button at the top to activate Play Mode
  7. (Recommended) enable Pin Mode from the ☰ menu to overlay Fairy Key on top of your virtual piano application
  8. Switch to your virtual piano application and play along with the sheet!

Applications running as Admin won't pass input to Fairy Key unless Fairy Key is also running as Admin (e.g. Roblox opened as Admin won't pass inputs to Fairy Key)

Shortcuts

  • Ctrl + R: Restarts the current sheet during Play Mode
  • Ctrl + Mousewheel: Scroll up and down to adjust font size (zoom)

Importing multiple sheets

Fairy Key comes with an example Sheets folder, which is located in the root directory of FairyKey.exe. This folder is also automatically created if it does not exist. Additional folders can be used within the Sheets folder for further organization (currently a folder depth of 1 is supported).

  1. Place your sheet .txt file(s) in the Sheets folder
  2. Launch FairyKey.exe
  3. Sheets will appear in the Library

Fairy Key can automatically detect and load new single sheets without restarting the application.


Fairy Key Sheet Format Guide

Fairy Key reads sheets from user-provided .txt files. In addition to virtual piano notation, sheets can include metadata, such as the Title, Artist, and creator of the sheet, as well as transposition data between lines. They follow the following format:

title=Clair De Lune
artist=Claude Debussy creator=Tevins
+1
[uo] [fh] [sf] [iO] [ad] [sf] [ad] -
[uo] [ps] [ad] [ps] f s [yi] [oa] [ps] [oa] [tyi] p a p d p [ryio] p o [ety] i o i [Wryu]

Adding Metadata

In order for Fairy Key to recognize metadata, the first three lines of any sheet can optionally include the following: Title, Artist, and sheet creator.

The metadata format (first 3 lines of the .txt file) must follow the following formatting:

title=
artist=
creator=

Metadata is optional and not required. If a sheet doesn't include metadata, Fairy Key will assume the sheet's title based on its filename.

Adding Transposition

To add a transposition indicator in a song, simply add it as a single line starting either with + or - followed by the amount:

+2

Without specifying, the default transposition is always 0. Transpositions can be added anywhere between or before notation lines.

Additional formats also supported:

Transpose +3
transposition -3
Transposition is -3
Transpose by 3
*No Transposition*
-3 Octave 3 (+9)
-3 (transpose 6)

Adding Notes

Lastly, notes can be added after the metadata freely using virtual piano notation. Fairy Key recognizes playable notes and ignores non-playable notes such as spaces. Currently supported formats for chords are [ ] and - for spaces/pauses.

Demos

fairykey-demo-2.mp4
fairykey-demo.mp4
Demo by Yakku played in Visual Pianos Demo by tevin_vr played in Visual Pianos

Building

Fairy Key is a WPF application built with Visual Studio 2022 using .NET 8.0. To build and run the project locally:

  1. Clone the repository
git clone https://github.com/FairyKey/FairyKey.git
  1. Go into the cloned directory and install dependencies
cd fairykey
dotnet restore
  1. Build the project
dotnet build

Launching the project can be done with the created FairyKey.sln file.

Third-Party Libraries

Fairy Key uses the following third-party libraries:

LibraryLicenseSource
Material.Icons.WPFMITNuGet
MouseKeyHookMITNuGet

Full license texts are included in THIRD_PARTY_LICENSES.md.

Releases

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

fairykey-icon-dark-small-crop

Fairy Key: a virtual piano sheet scroller

Fairy Key is a virtual piano sheet reading tool for practicing playing piano using QWERTY with features such as auto-scroll, note highlighting, a library to organize sheets, and more!

Features

  • Auto-scroll: Notes are highlighted as you play and the sheet scrolls automatically line by line
  • Unfocused Keyboard Input: During Play Mode, Fairy Key is passed keyboard inputs while not focused so you can play along in your preferred virtual piano app (Roblox, FL Studio, etc.) while following sheets in Fairy Key!
  • Library: Create, organize, and share sheets
    • Sheets are stored as .txt files with optional metadata such as the songs Title, Artist, and sheet creator.
    • Folder support
  • Pin mode: Keep Fairy Key on top of other applications while you play
  • Noob mode: Non-shifted notes count as correct notes
  • Transpose support
  • Resize window to fit sheet support
  • Restart the sheet and scroll to the top at any time

Installation

  1. Download the latest release directly from the official website or from Github's Releases page
  2. Extract the ZIP anywhere you like
  3. Run FairyKey.exe

Currently only Windows 10 and 11 are supported and .NET 8.0 runtime is required to run.

Usage

  1. Launch FairyKey.exe
  2. Use the ☰+ button to create a new sheet
  3. Follow the Fairy Key Sheet Format Guide
  4. After saving a sheet, it will appear in the Library panel
  5. Click a sheet to load it
  6. Press the Play button at the top to activate Play Mode
  7. (Recommended) enable Pin Mode from the ☰ menu to overlay Fairy Key on top of your virtual piano application
  8. Switch to your virtual piano application and play along with the sheet!

Applications running as Admin won't pass input to Fairy Key unless Fairy Key is also running as Admin (e.g. Roblox opened as Admin won't pass inputs to Fairy Key)

Shortcuts

  • Ctrl + R: Restarts the current sheet during Play Mode
  • Ctrl + Mousewheel: Scroll up and down to adjust font size (zoom)

Importing multiple sheets

Fairy Key comes with an example Sheets folder, which is located in the root directory of FairyKey.exe. This folder is also automatically created if it does not exist. Additional folders can be used within the Sheets folder for further organization (currently a folder depth of 1 is supported).

  1. Place your sheet .txt file(s) in the Sheets folder
  2. Launch FairyKey.exe
  3. Sheets will appear in the Library

Fairy Key can automatically detect and load new single sheets without restarting the application.


Fairy Key Sheet Format Guide

Fairy Key reads sheets from user-provided .txt files. In addition to virtual piano notation, sheets can include metadata, such as the Title, Artist, and creator of the sheet, as well as transposition data between lines. They follow the following format:

title=Clair De Lune
artist=Claude Debussy creator=Tevins
+1
[uo] [fh] [sf] [iO] [ad] [sf] [ad] -
[uo] [ps] [ad] [ps] f s [yi] [oa] [ps] [oa] [tyi] p a p d p [ryio] p o [ety] i o i [Wryu]

Adding Metadata

In order for Fairy Key to recognize metadata, the first three lines of any sheet can optionally include the following: Title, Artist, and sheet creator.

The metadata format (first 3 lines of the .txt file) must follow the following formatting:

title=
artist=
creator=

Metadata is optional and not required. If a sheet doesn't include metadata, Fairy Key will assume the sheet's title based on its filename.

Adding Transposition

To add a transposition indicator in a song, simply add it as a single line starting either with + or - followed by the amount:

+2

Without specifying, the default transposition is always 0. Transpositions can be added anywhere between or before notation lines.

Additional formats also supported:

Transpose +3
transposition -3
Transposition is -3
Transpose by 3
*No Transposition*
-3 Octave 3 (+9)
-3 (transpose 6)

Adding Notes

Lastly, notes can be added after the metadata freely using virtual piano notation. Fairy Key recognizes playable notes and ignores non-playable notes such as spaces. Currently supported formats for chords are [ ] and - for spaces/pauses.

Demos

fairykey-demo-2.mp4
fairykey-demo.mp4
Demo by Yakku played in Visual Pianos Demo by tevin_vr played in Visual Pianos

Building

Fairy Key is a WPF application built with Visual Studio 2022 using .NET 8.0. To build and run the project locally:

  1. Clone the repository
git clone https://github.com/FairyKey/FairyKey.git
  1. Go into the cloned directory and install dependencies
cd fairykey
dotnet restore
  1. Build the project
dotnet build

Launching the project can be done with the created FairyKey.sln file.

Third-Party Libraries

Fairy Key uses the following third-party libraries:

LibraryLicenseSource
Material.Icons.WPFMITNuGet
MouseKeyHookMITNuGet

Full license texts are included in THIRD_PARTY_LICENSES.md.

Releases

Contributors

Languages