Songbook is a plugin for browsing your abc song files and playing them with a click of a button. The plugin consists of two parts, an in-game plugin which displays the song library, and an external windows program that generates a list of your abc song files in a format that the plugin can read. The external program is realized as a HTA file (VBScript) so that it's fairly easy to check for safety.
Select and play a song just by clicking with your mouse
Support for starting synced play and making a ready check
Moveable and resizable window
Support for subdirectories
Support for songs with multiple parts
Display of actual song names and not just the filename
Complimentary multi part abc file, Oolannin sota!
Optional song parts display which can be used to view and directly select parts.
Support for German clients (big thanks to Thorsongori for translations and testing!)
Support for French clients (big thanks to Vevenalia for translations and testing!)
Search feature
Custom commands for pasting song information to a chat channel *experimental*
NEW! 8 slots for instruments or other items/skills (which are saved per character)
Installation
If you haven't used plugins before it's good to read this post first
Unzip the plugin to your 'Documents/The Lord of the Rings Online/Plugins' folder
If you have upgraded from a previous version, you probably have to run the songbook.hta file before your song library works again. See instructions below.
How to use
IMPORTANT - Before loading the plugin, use the supplied songbook.hta file to build your library. Double click the file to run it, or just make a shortcut to it and place it anywhere you want. Run it whenever you have made changes to your song library.
To load the plugin type /plugins load songbook.
Click M button to toggle music mode (make sure you have an instrument equipped).
Select a song by clicking it and then press play button to start playing. There's also buttons for synced play and making a ready check.
Click and drag from the bottom right corner of the window to resize it.
Click and drag the title bar to move the window.
Closing the window will save its position and size.
Drag the separator lines to scale the sizes of directory, song, and part lists.
If the song has multiple parts, you can click little arrows next to the part number ( marked X: ) to switch selected part.
Custom commands can be cycled with the mouse wheel when the mouse is over the "S" (short for Share) button
Answers to commonly asked questions can be found here.
Command line options
/songbook show - shows the Songbook window
/songbook hide - hides the Songbook window
/songbook toggle - toggles the Songbook window
/songbook - lists command line options
Known issues and comments
Songs with special characters, such as accents, in their file names will not play with the plugin. This seems to be a problem with the plugin API.
Future plans
Playlist/Favorites
Version history
0.81 (14/06/2011)
fixed error with loading instrument settings
fixed search and song description setting not saving correctly
0.80 (12/06/2011)
added 8 slots for instruments or other items/skills (saved per character)
added an option to show full description in the song list
songbook button can no longer be moved outside the screen
0.74 (05/06/2011)
fixed a nasty bug with directory list code
removed forced z-order setting
0.73 (02/06/2011)
now the directory list works more like a real directory browser
corrected sync keyword with French translation
0.72 (24/2/2011)
.ABC extension no longer shown in song list
fixed a problem with tracks that have multiple T: lines
tried to fix problems with string conversions of settings
settings are now saved on unload
made the launch button semi-transparent when not active
.hta file now finds files with .txt extension
window can be closed with esc (but it might still show game menu as well)
0.71 (29/11/2010)
button location is now saved with other settings
0.70 (29/11/2010)
new feature: Search
new feature: Custom commands *experimental*
support for Nov 29 patch
added a movable start button/icon
new settings window
list labels now display the number of list items
made song part arrow buttons larger
fixed hta parsing for songs with .ABC extension
made hta a bit clearer when username is not found
plugin now uses native ClearItems and CheckBox
plugin now hides when F12 is pressed
0.61 (08/11/2010)
support for German clients (big thanks to Thorsongori for translations and testing!)
support for French clients (big thanks to Vevenalia for translations and testing!)
fixed a bug with part change arrows
clicking track change arrow also changes the focus on the parts list
fixed button corner transparency
initial support for Lotro Mod Manager 1.0.5
0.60 (13/10/2010)
song parts now support any numbering schemes, this required a change in the database structure
added a toggleable song parts display
cleaned up user interface scaling code, and fixed some bugs with it
added titles to list boxes
0.54 (03/10/2010)
fixed another bug with empty root directory
included an icon for the hta file (thanks Balgosa!)
fixed an issue with some abc files causing database corruption (the dreaded unable to parse file error)
0.53 (23/09/2010)
fixed one more bug with arrows *slaps himself*
0.52 (23/09/2010)
vbs script now replaced with hta file (basically vbscript embedded in html document)
the script should now automatically detect all the needed information (that is, lotro directory and lotro user name)
abc comment markings are now filtered out
songs with spaces in their filenames work now
fixed a bug with part change arrows
complimentary song!
0.51 (22/09/2010)
Fixed a bug with empty root directory
0.50 (21/09/2010)
Support for sub directories!
Support for songs with multiple parts!
The selected song now displays the real name of the song/part, not filename
Removed .abc from song names, they weren't really needed
Added more feedback to vbs script in case of problems
0.22 (18/09/2010)
vbs script bug fix
0.21 (18/09/2010)
Removed unnecessary debug output from vbs script
0.20 (18/09/2010)
Support for synced play
Button for making a ready check
Refreshed UI
VBScript now supports Windows XP and 2000
VBScript now checks for required directories and also creates the plugin data directory if needed
VBScript allows a second parameter for overriding the location of Documents folder
0.10 (17/09/2010)
Initial release
Have fun!
-Chiran, Laurelin (EU)
Last edited by Chiran; Oct 11 2012 at 04:31 AM.
Reason: update
When the plugin system saves plugin data it creates a directory where it saves plugin settings. The name of the directory is your Lotro username. I understand the concern, but it's nothing to worry about.It's just related to the Lotro plugins directory structure on your computer. If the script doesn't know where your plugin data is saved, it cannot copy the song database there for the plugin to read. I know it can sound a bit fishy to use an external program to generate the song library, but at the moment it's the only option.
Before loading the plugin, use the supplied vbs script file to build your library. Run the script from command line by typing 'songbook <your lotro login name>
Can you explain how this is done a little better? I have never worked with this type ofscript and not sure how to do this.
Love the plugin idea though as I have tons of music files
An alternative style is to make it so you load the plugin first - then run the vb script. Plugin creates a blank plugindata file if it doesn't already exist - and vbscript searches subdirectories to find the plugindata with the correct name. Then you add a 'refresh' button to the plugin which reloads (using the asynchronous load). That way the vbscript requires no command line arguments.
An alternative style is to make it so you load the plugin first - then run the vb script. Plugin creates a blank plugindata file if it doesn't already exist - and vbscript searches subdirectories to find the plugindata with the correct name. Then you add a 'refresh' button to the plugin which reloads (using the asynchronous load). That way the vbscript requires no command line arguments.
Wouldn't it cause problems if you run multiple accounts on the same computer? I don't know a lot about running scripts and it would almost seem like it would just do that for the first account it ran across. :/
If you want to look at the script, all you need to do right click on it and open-with notepad. If you have notepad++ then it should already be on your right-click so you don't need to worry about open with. Another option if you don't trust it and don't know how to read script. Put a post on Lotrointerface.com asking about it, I know they check files before they allow them to be downloaded because I used to author a plug-in. I just don't know how in-depth they go with them.
P.S. Really like this plugin, thanks Chiran. Went out with the wife tonight in Bree and played some duo songs we found on thefatlute. Worked out rather well and was nice seeing all the new people out and about on Firefoot.
Last edited by Uthboth; Sep 18 2010 at 02:29 AM.
Reason: additional info
Wouldn't it cause problems if you run multiple accounts on the same computer? I don't know a lot about running scripts and it would almost seem like it would just do that for the first account it ran across. :/
I was thinking about just taking the first sub directory, but because of this reason, made it configurable. And in any case the plugin _must_ know what is the directory to save at whether it asks you or not. And the name of the directory is the same as your lotro login .
Thank you so much for making this.
I want to point out an error in the vbs file.
I'm using Windows XP and the vbs could not create the plugindata file.
So I opened the vbs and found out that the musicdir is defined twice at
line 39 and 40. Then I changed the second musicdir to datadir copied
from line 36, modified a bit, saved the vbs file. And voila it worked.
Last edited by Markbjorn; Sep 19 2010 at 03:44 AM.
Thank you so much for making this.
I want to point out an error in the vbs file.
I'm using Windows XP and the vbs could not create the plugindata file.
So I opened the vbs and found out that the musicdir is defined twice at
line 39 and 40. Then I changed the second musicdir to datadir copied
from line 36, modified a bit, saved the vbs file. And voila it worked.
Yes, that was an embarrasing bug with version 0.21, it's fixed with 0.22 .
I added a few major features and raised the version number to 0.50. Both data and user interface side got more complex so I expect there will be bugs. (plus the normal problems with the vbs script, of course )
New version now includes:
-Support for sub directories
-Support for real song names
-Support for songs with multiple tracks
Latest version is now 0.53. Fixed a number of things and replaced the vbs file with a hta file (basically same thing but wrapped in html).
-Chiran
While I have no issues running a script to get this plugin working, would it be possible to just provide a simple .exe that does all the heavy lifting? Even though more and more people are what could be called "computer literate" it seems to me that running the script properly or anything through the c:\prompt is sufficiently foreign to most users.
There are two novels that can change a bookish fourteen-year old's life: The Lord of the Rings and Atlas Shrugged. One is a childish fantasy that often engenders a lifelong obsession with its unbelievable heroes, leading to an emotionally stunted, socially crippled adulthood, unable to deal with the real world. The other, of course, involves orcs.
While I have no issues running a script to get this plugin working, would it be possible to just provide a simple .exe that does all the heavy lifting? Even though more and more people are what could be called "computer literate" it seems to me that running the script properly or anything through the c:\prompt is sufficiently foreign to most users.
Yes, the .hta file is as close to an .exe as you can get. You double click it to run it and it opens up a user interface giving instructions. And even more, it now automatically detects your lotro user name and all you have to do is click button 'build music library' (at least 90% of the time I hope heh). The reason I use scripting is because it's very easy for the community to verify its authenticity and that it does what it is supposed to do. With an .exe it's a lot more complicated. People are paranoid about these things .
Hi Chiran and songbook users,
I do have abc files in my Music folder. Any advice please? I think this is a great idea and I'd love to get it working.
This sounds like a problem with script access rights which I haven't run into yet. Could you try if this plain vbs script works? You run it from the windows command prompt by typing 'songbook.vbs lotrologinname' (replacing with real login name). The script is a bit older version of the code, but should work.
My familiarity with the windows cmd prompt is less than desirable (all I remember about it is cd [directory name] and dir/w. Thank you, Eru, for GUIs...).
So, should I put the vbs file anywhere in particular?
Regarding the cmd prompt, I presume that means Start button / Run... / Open cmd which gets me to a DOS window at C:\Documents and Settings\Username>
Do I need to find the folder with the vbs file or simply run it from there?
You can run the script from anywhere on your hard drive. So you could for example unzip it to your desktop. Then when you open the prompt type 'cd desktop' (this changes the directory to your desktop folder) and then run the command 'songbook.vbs lotrologinname'.
Why don't you make a .exe instead of a VBS script? I have disabled vbs scripting on my pc. Simple download the free C# express edition from microsoft, build against a low version of .net ( like 2.0, everybody should have it) and make the program in that.
Why don't you make a .exe instead of a VBS script? I have disabled vbs scripting on my pc. Simple download the free C# express edition from microsoft, build against a low version of .net ( like 2.0, everybody should have it) and make the program in that.
Well, VBScript is a curse and a blessing. I like it because it's fast to develop for me as I have 0 experience on .NET development. It's also a scripting language much like LUA so it sort of fits with the idea of LUA development. And it's very easy for other users to find out if the script is doing what it is supposed to be doing since the source is there for every one to see. I know how paranoid people are nowadays with all kinds of executables coming with addons.
You can run the script from anywhere on your hard drive.
Another wall: I popped it on the desktop and ran it. I also moved it to the drive my LotRO folder is on and managed to navigate my way through the prompt (yay me!) to run it from there. Both times I get and error window reading "Could not locate or create plugin data directory below: x:\Documents\The Lord of the Rings Online\PluginData\loginname\Al lservers. Please check that the location is correct and try to create it manually."
Thanks for your quick responses so far Chiran, and I hope my dilemmas are at least helping you to enhance your plugin even if they don't get my songbook working
System:
Microsoft Windows XP
Professional
Version 2002
Service Pack 3
Ah, I have only one XP machine at the moment which I can test with. Anyhow, I found quite many articles mentioning this error message. But, I'm not really sure which one would apply to this situation. This is an old article but probably related: http://support.microsoft.com/default...b;en-us;195826
However, it's good to make sure that the scope of the access is restricted to only local network/files.
When I open the hta file, it opens in notebook but when i double click it, nothing happens I tried googling it but all i find is stuff over my head or it brings me back to you hehe Any ideas why it won't work for me? I'm running winxp
Not sure if I am really stupid or just really new to plugins here but two questions.
1 the link you mention in your first post seems to by for people wanting to write there own plugins. I do not so there is nothing there I need to get...right?
2 I do not see any link to download your plugin? What am I missing?
Not sure if I am really stupid or just really new to plugins here but two questions.
1 the link you mention in your first post seems to by for people wanting to write there own plugins. I do not so there is nothing there I need to get...right?
2 I do not see any link to download your plugin? What am I missing?
later
Hi,
The first link contains a Turbine plugin package. It has some stuff that quite many of the plugins utilize, mine as well at the moment. So it's good to have that installed in any case.
The link to the plugin is at the end, or actually it points to LoTROInterface which is a site for hosting Lotro plugins and other addons. But here's the link again: http://www.lotrointerface.com/downlo...-Songbook.html
Looks like a great utility for a lot of people. I like the interface, and, once installed, everything seems very intuitive. I don't think it would (currently) work for our band, as the multi-track support seems to only recognize an indexing system different from ours, and I'd have to edit the 300 or so non-solo songs in our collection, as well as retraining our kinmates. Nonetheless, I think it'll be a big help to the LOTRO musical community.
One suggestion, which might be helpful: adding a stop playing button that accomplishes the equivalent of pressing `. While the toggle music mode will accomplish this (or the performer can just press ` as above), it would probably be a nice extra for those who prefer to stay in music mode while stopping their current song.
Just this guy, you know.
My (infrequently updated) blog.
Our kin website.
Looks like a great utility for a lot of people. I like the interface, and, once installed, everything seems very intuitive. I don't think it would (currently) work for our band, as the multi-track support seems to only recognize an indexing system different from ours, and I'd have to edit the 300 or so non-solo songs in our collection, as well as retraining our kinmates. Nonetheless, I think it'll be a big help to the LOTRO musical community.
Thanks for the comments! Now what I'm interested about is what indexing system are you using, maybe I can support that too?
Originally Posted by NazgulLord
One suggestion, which might be helpful: adding a stop playing button that accomplishes the equivalent of pressing `. While the toggle music mode will accomplish this (or the performer can just press ` as above), it would probably be a nice extra for those who prefer to stay in music mode while stopping their current song.
Yes I'd like to implement that as well, but so far I haven't found a way to hook into that. There's no access to key bindings. But if anyone knows, for example, an emote that just 'happens' to stop playing I'd be interested .
Now what I'm interested about is what indexing system are you using, maybe I can support that too?
Yes I'd like to implement that as well, but so far I haven't found a way to hook into that. There's no access to key bindings. But if anyone knows, for example, an emote that just 'happens' to stop playing I'd be interested .
-Chiran
To address the second part first, I suspected that was the case. I'm not aware of any /commands that accomplish that, either. In any event, toggling music mode is quite an acceptable means. I included the comment more as a wishlist.
As to our indexing method, I'm aware it's not the only one, nor the simplest. It's been around in the game longer than I have, and we're not the only kin/band to use it.
Basically, each instrument has its own set of ten numbers assigned to it. So, for instance, all Lutes start with 1x, all Harps with 2x, Theorbo 3x, Flute 5x, Horn 6x, Clarinet 7x, and Bagpipe 8x. The x is filled with whichever number of the instrument it is, so if there's only one in the piece, it will be, by default, 1. Drums are single digits, 1 almost always, or 1 and 2 if there is a song that requires 2 drums.
I'm no initiate of the new plugins by any stretch, so I'm not even sure if it's possible to recognize other indexing systems. What the Songbook seems to do is recognize the first part as X: 1, the second part as X: 2, etc, regardless of what the X value is in the actual file. Whether the Songbook can or even could read the values in the ABC itself is unknown to me, though I suppose it must be able to up to a certain extent, as it does display the song title given in the file.
One other wishlist item; unnecessary but would be helpful for those of use using multi-part files. A third screen in the interface which displays all the different parts in the highlighted song, basically the info you would see in your chat if you did /playlist songname* (As it stands, these can be viewed individually by going through the X: selection, but it's always great to have the full list of parts in front of me, from the band leader's perspective.) This would probably be unnecessary and extraneous information for 80% of the people using your plugin, though, and could bloat what is, at present, a beautifully simple and, as I said before, intuitive interface. Such an extra display box, then, might be best implemented as an option, or by default at its smallest size.
Last edited by NazgulLord; Oct 05 2010 at 03:19 PM.
Just this guy, you know.
My (infrequently updated) blog.
Our kin website.
I'm no initiate of the new plugins by any stretch, so I'm not even sure if it's possible to recognize other indexing systems. What the Songbook seems to do is recognize the first part as X: 1, the second part as X: 2, etc, regardless of what the X value is in the actual file. Whether the Songbook can or even could read the values in the ABC itself is unknown to me, though I suppose it must be able to up to a certain extent, as it does display the song title given in the file.
This is excellent information, I'll adapt my implementation to be more generic when it comes to part numbering. The assumption that parts would be numbered in order seems stupid of me now heh.
Originally Posted by NazgulLord
One other wishlist item; unnecessary but would be helpful for those of use using multi-part files. A third screen in the interface which displays all the different parts in the highlighted song, basically the info you would see in your chat if you did /playlist songname* (As it stands, these can be viewed individually by going through the X: selection, but it's always great to have the full list of parts in front of me, from the band leader's perspective.) This would probably be unnecessary and extraneous information for 80% of the people using your plugin, though, and could bloat what is, at present, a beautifully simple and, as I said before, intuitive interface. Such an extra display box, then, might be best implemented as an option, or by default at its smallest size.
I can definitely see the convenience in it, but as you said it comes down to the user interface. Technically it would be possible, no problem. Problem is how would I present it, where to fit it, what user interface components to use, do I make it configurable or optional information... So yes it's a good idea, but it's something I have to think about a bit.
One other wishlist item; unnecessary but would be helpful for those of use using multi-part files. A third screen in the interface which displays all the different parts in the highlighted song, basically the info you would see in your chat if you did /playlist songname* (As it stands, these can be viewed individually by going through the X: selection, but it's always great to have the full list of parts in front of me, from the band leader's perspective.)
I have an implementation now for the track issue that came up. I just wanted to ask your opinion on the issue above. Is the track/part list something you'd like to have visible at all times when performing, or is it something you just need to glance quickly at every now and then (like a tooltip)? I'm just considering various UI possibilities.
That's a good question. I don't think it'd be something that needed to be visible all the time...a tooltip might do it. When I first thought of it, I envisioned a third display box on the window, which could be enlarged or shrunk as needed, just like the other two you have in there now. That way, when/if it was needed, you could consult it and shrink down, say, the full songlist, showing just the parts for the song you're working on.
Just this guy, you know.
My (infrequently updated) blog.
Our kin website.
That's a good question. I don't think it'd be something that needed to be visible all the time...a tooltip might do it. When I first thought of it, I envisioned a third display box on the window, which could be enlarged or shrunk as needed, just like the other two you have in there now. That way, when/if it was needed, you could consult it and shrink down, say, the full songlist, showing just the parts for the song you're working on.
Yes, something like that could work. I've been trying out a solution where the track/part list is sort of an additional window below the main one, and it could work either tooltip-like or be toggleable. Although having another, optional, scalable box inside the main window sounds neat, it does add another layer of complexity when calculating window resizes and scaling. Doable I'm sure, but a bit annoying coding-wise heh.
I think a toggleable box would probably be the best bet. Again, that way it doesn't intrude for the people who don't need it, but it's there to consult and check syncs against.
Just this guy, you know.
My (infrequently updated) blog.
Our kin website.
I went along with it being another toggleable box in the main window. I knew I wouldn't be happy with it any other way really . And it wasn't actually bad at all, though required a full review and clean up of my messy scaling code. An additional benefit is that you can use the track list to select tracks as well (don't have to click the arrows up/down).
Still pondering if I should call X markings tracks or parts, or something else. The official specification just mentions that X is a reference number, which is rather non-descriptive.
Yes, perhaps so. Although both track and part can be used to refer either to a section of a song (or the whole song, as in album track) or a specific instrumental or vocal role in the song, maybe track sounds a bit too 'modern' for this purpose. Which is sort of contradicting considering that this is a computer game :P. But at least I associate 'track' with multi-track audio editing software and such.
6 Long Street, Bree-land Homesteads, Landroval, open to all
Posts
2,641
Re: [Plugin] Songbook
Originally Posted by pwnzer
Rather cautious about putting my user name in..
Originally Posted by Chiran
When the plugin system saves plugin data it creates a directory where it saves plugin settings. The name of the directory is your Lotro username. I understand the concern, but it's nothing to worry about.It's just related to the Lotro plugins directory structure on your computer. If the script doesn't know where your plugin data is saved, it cannot copy the song database there for the plugin to read. I know it can sound a bit fishy to use an external program to generate the song library, but at the moment it's the only option.
Originally Posted by Chiran
And in any case the plugin _must_ know what is the directory to save at whether it asks you or not. And the name of the directory is the same as your lotro login .
Putting the user name is sort of silly. OP/author, change this to:
%USERPROFILE%
Example: %USERPROFILE%\My Documents\The Lord of the Rings Online\Music\
Will direct a Windows app/script to...
XP:
C:\Documents and Settings\MyUserName\My Documents\The Lord of the Rings Online\Music\
7/Vista:
C:\Users\MyUserName\My Documents\The Lord of the Rings Online\Music\
┌──────────────────────────────────────────────────────────────────────────────────┐
│ Crimson Vanguard successor on Landroval .............................. ..........│
├──────────────────────────────────────────────────────────────────────────────────┤
│ Cipheron: .60 Lore-master, SM Historian . Ciphel: ......21 Minstrel, Explorer ...│
│ Ciphariel: 53 Champion, SM Explorer ..... Ciphoin: .....21 Runekeeper, Historian │
│ Ciph: .....44 Captain, Woodsman ......... Extrabank: ...02 (mule) ...............│
│ Ciphorin: .24 Guardian, Armourer ........ Extrastorage: 02 (mule) ...............│
│ Ciphara: ..23 Burglar, SM Tinker .............................. .................│
│..................................................................................│
│▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓│
└──────────────────────────────────────────────────────────────────────────────────┘