(1 MB)
Updated: 01-03-15 09:15 PM
File Info
Warlords of Draenor (6.0.3)
Warlords of Draenor Pre-Patch (6.0.2)
Updated:01-03-15 09:15 PM
Created:11-24-14 10:07 PM
Categories:RolePlay, Music Mods, Mini Games, ROFL

Virtual Piano

Version: 1.5
by: Trololol [More]

Virtual piano is what it says it is; an 88 key virtual piano. For World of Warcraft. With quite a few more features you'd not expect to find on just a piano.

Video preview of the addon is here

Yes, you can use your mouse. You can use your keyboard. You can play live with friends. You can play back midi files. You can even use a midi keyboard if you use third party tools like Bome's Midi Translator. It has playlist and shuffling and playback controls.

Have a non qwerty keyboard, don't like the default binds, or want to play a specific song?
Create your own keybind profile by typing "/vp create *ProfileName*" and select your profile on the top right and side of the piano. Start binding by clicking Options and ticking "Open Keybind Window".

Want to play with your friends?
Get your friend to download this addon and head over to the options menu by typing /vp config (or clicking options on the piano) Enable one (or more) of the Broadcast communication channels and the Receive from communication channels.

Want to use your own midi files?
Get the MIDI parser for Virtual Piano to play your midi files here

Want to try out some playlists?
Download Virtual Piano - Video Games (22 songs in 2 playlists) here
Download Virtual Piano - Yiruma (35 songs in 1 playlist) here

Want to record and play back your recordings?
Click Options and click "Open Script Window", and then press Record to record.

Want to send a recording/song to someone else so they can hear it?
Make sure you have at least one "Broadcast to player/guild/party/raid" option selected
Likewise, make sure your friend has the same Receiving option selected.
Paste in a script in the script window by clicking Options, and click "Open Script Window".
If you want to send your recording to someone else, click the Export button so that the text box fills up with your recording.
If you want to send a midi file, use the MIDI parser, paste in to the script window and click "Send Script"


  • NEW: Midi player! Using the tool here, you can play your own midi files ingame!
  • A fully featured 88 key piano with the same key bindings as the website virtualpiano.net (that has a user base of 8 million)
  • Has no input lag
  • Fully featured recording and playback support, allowing you to also send your recordings and scripts to friends
  • Additional keybinds to the default keys (such as "[", "]", "\", delete key, backspace, minus, equals, tab, caps lock, etc)
  • Multiplayer piano: includes broadcasting for party, whisper, guild and raid. Theoretically, you could have your whole guild or raid playing together on a single piano.
  • Mouse support: you can click on the keys to play them. Unlike virtualpiano.net, the sound does not go off once you let go your mouse, and also plays instantly once you click on the key.
  • Holding down keys won't result in the keys being spammed like virtualpiano.net
  • A scale for scaling the size of the piano
  • Dim button for hiding out everything else
  • Addon sounds only button for muting out all sounds so you can just hear the piano
  • Low memory footprint

Notes: Midi/script/recording playback will play smoother the higher the frames per second of the game (this is because the playback script updates on every frame).
World of Warcraft has a limit on the number of sounds played at the same time. I suggest keeping your sounds settings to High (64)

Virtual Piano 1.5
Add playlist support
Playlist will continue playing until user presses stop
Shuffle support for playlists
Notify user via chat which song is playing
Implemented support for external addons to add playlists
Implemented Previous Track and Next Track buttons for playlists
Implemented a slider bar for songs played
Re-keybinding a key will refresh the keybind on the piano keys
Implemented song speed control
Add a border for the script panel
Added a pause button
You're now able to reset all addon settings by typing /vp reset
Moved the Enable keyboard to the right, in the place of where Addon Sounds Only button was
Addon sounds only option placed in the options menu, along with random colors
Changed stop button to an icon

Fixed a small bug where the transparency settings of piano elements were not saved properly
Slight modification to button border size
Fix texture of piano key D2
Fixed texture RKey.tga
A bit of code cleanup
Moved binding functions to their own .lua file
Creation of all pressed keys in lua instead of xml
Compatibility updates

Version 1.4.4
Initial Keybinding support. Type /vp bind to start binding
Initial profile support. Type /vp create (profilename) to create your own keybind profile.
Profile switiching support. You can select your keybind profile by selecting the profile at the top right of the piano.
Piano will dynamically resize if it gets larger than the width of the screen when using the More/Less Keys button
A lot more undocumented changes

Version 1.4.2a
Fix an issue with switching off the random colors that caused the extra octaves to go missing

Version 1.4.2
Add a hide and show key option, accessible by using "/vp hide keys" and "/vp show keys"
Fix a typo when pressing the Less Keys button, addon would break

Version 1.4.1b
When playing a note, check if the note exists (in case a player sent a malformed script, or the user played a malformed script)

Version 1.4.1a
Fixed a slight bug regarding the opacity slider in the color selection

Version 1.4.1
Remove some unneeded code
Rework the SetKeys() function to accept a specific key in prep for keybindings
Add color customization of the dim background

Version 1.4
Initial work on keybinding capabilities - players will soon be able to change their keybindings ingame. In the meantime, you can change it in your WTF folder
Remake the demo.lua file
Change one of the C key's textures to change when the More Keys button is pressed
Use tinsert instead of using an iterator for inserting information in various functions
Use a proper name for font strings so they can be accessed outside the function
Make a binds.lua file that holds all the keybinds for the piano keys
Define addon version at the top in case VP_Settings (SavedVariable) gets changed in the future
Rename all the piano key frames
Rename all the ogg files to match piano key frames
The Send Script button will now check if the player is broadcasting and notify the player if the addon has no one to send to
Added random colors option for pressed keys
Rewrite most of the DownKey function to check keybindings

Version 1.3.5
Edited all the sound files. They should now feel even more responsive
Converted all mp3s to oggs

Version 1.3.4a
Fix a variable assignment for recording
Fixed exporting of recordings
Code cleanup

Version 1.3.4
Fixed Piano interface not showing up when a player sends a script

Version 1.3.3
Fixed recording and saving of recordings

Version 1.3.2
Rework the DownKey function
Rework the logic of sending messages
Fixed a slight bug where typing /vp demo multiple times would speed up the song
Show the Stop button on the demo
Fixed a rare bug where some random piano keys were triggering other piano keys
Created a defaults.lua file with the defaults for the addon
Localize some functions
Added extra keybinds lua file

Version 1.3.1a
Fixed a slight bug where the piano wouldn't show up when the user has clicked Play Script or Play Recording when the piano interface isn't shown

Version 1.3.1
You can now set the color to the sharps, naturals, background and button colors by using /vp color
Remove pressed key tga files as they are no longer needed
Remove all libs from the addon
Make a defaults lua file to handle all the defaults for the addon
Save addon settings for various settings: dim background, scale, key colors

Version 1.3
Animated the More/Less Keys button
Fade in/out when the piano has been opened/closed
Fixed a rare bug where clicking the piano key with the mouse would sometimes trigger a different key
Changed the demo.lua to script format
Addon sounds only button will check if you have selected this option on load
More xml code cleanup

Version 1.2.9a
Fixed a slight bug introduced in the last version where hovering over a button would create new textures
Removed some more unneeded tga files and a blank text file

Version 1.2.9
Remove backgrounds of many Virtual Piano frames and instead use blizzard frames with coloring - this will allow coloring of piano keys and background
Use Arial Narrow font from Game directory
Compressed piano note .tga files
Highlight option buttons with a tint of green on mouse over
Dim background button is now a checkbox in the options panel
Move currently playing frame inside the main virtual piano frame
Script interface has been resized and is now moveable
Changed position of "Currently Playing" to top right of piano frame.
Additional formatting of the virtualpiano.xml file
Remove unneeded libs

Version 1.2.7
Changes to some slash commands
Remove unneeded tga files
The "Type Text" button text will change to "Clear Focus" if you gain focus of the edit box
Localized a few more variables
Added some commenting in the Virtualpiano.xml file

Version 1.2.5
Fixed a bug where user would send a script and reload/disconnect and proceed to send another script
Fixed a bug where multiple players would be sending a script to the user, resulting in a jumbled up song
Modified variable naming conventions
Localized unneeded global variables

Version 1.2
Added Type Text button to the script interface
Renamed the Play Record/Play Script buttons
Fixed some logic in the DownKey() function to do with holding down shift and clicking a key
Open script window checkbox actually works
More logical note names on the piano GUI
Added a stop button at the top of the piano and removed the one in the script interface
Reformatted XML files - Piano Key frames no longer need their separate script tags, instead it will be held in their template and lua file, nearly halving on the xml file size

Version 1.10a
Minor fix up
Remove debug code

Version 1.10
Modify buttons in the script interface
Some code cleanup and minor bug fixes

Version 1.09a
Add a "Type Text" button to the script interface

Version 1.09
Initial Release
Optional Files (3)
File Name
01-04-15 01:19 AM
01-03-15 09:45 PM
12-03-14 01:46 AM

Archived Files (22)
File Name
12-20-14 03:45 PM
12-03-14 05:07 PM
12-03-14 03:53 AM
12-03-14 12:49 AM
12-02-14 03:35 AM
12-02-14 12:16 AM
12-01-14 11:46 PM
12-01-14 11:34 PM
12-01-14 11:15 PM
12-01-14 12:55 AM
12-01-14 12:07 AM
11-30-14 05:15 AM
11-30-14 01:28 AM
11-30-14 12:58 AM
11-29-14 06:31 PM
11-28-14 08:52 PM
11-28-14 03:50 AM
11-27-14 04:03 PM
11-27-14 03:56 PM
11-27-14 05:32 AM
11-25-14 10:44 PM
11-24-14 10:07 PM

There have been no comments posted to this file.
Be the first to add one.

Category Jump:

Support AddOn Development!

You have just downloaded by the author . If you like this AddOn why not consider supporting the author? This author has set up a donation account. Donations ensure that authors can continue to develop useful tools for everyone.