Instructions for PipeLime 1.0 by Ewan Macpherson , September 1998 Contents: 1 Introduction 1.1 What is PipeLime for and what can it do? 1.2 How does it work? 2 Preparing to use PipeLime 2.1 MIDI driver 2.2 Lime MIDI settings 2.3 Lime Keypad settings 2.4 PipeLime files 2.5 PipeLime MIDI settings 3 Using PipeLime 3.1 File Menu 3.2 MIDI Menu 3.3 Preferences Menu 3.4 Entering Notes 3.5 C-natural & F-natural Buttons 4 Defining Embellishments and Gracenote Popup Menus 4.1 Grace.def 4.2 Grace.pop 5 Administrivia 5.1 Feedback 5.2 Fine Print - PipeLime is 'Tuneware' 5.3 Disclaimer 5.4 Technical details 5.5 Acknowledgments 1 Introduction ============== 1.1 What is PipeLime for and what can it do? -------------------------------------------- PipeLime is a program which sends duration codes, individual notes and bagpipe gracenote combinations to the Lime music notation program (Win95). The purpose is to speed entry of Highland bagpipe music by minimizing hunting and pecking on the tiny Lime note-entry piano. Pitch and duration are selected simultaneously by clicking a note cursor on one of several "stafflets" that appear in the PipeLime window. There are also buttons which mimic the right and left arrow keys and the backspace key (for deleting notes). PipeLime is not clever; you still need to know the ins and outs of Lime. It merely enters notes. 1.2 How does it work? --------------------- When you select a note to enter (for example, low A quarter note), PipeLime first sets up the note duration. This is done by sending 'virtual' keystrokes to the Lime program. Using Lime's Keypad mapping feature, these take the place of clicks in the piano window. Then the appropriate pitch is sent via MIDI, Lime processes it and the note appears as if you had entered it manually. Because it takes a while for the keystrokes to be processed, a delay is imposed before the MIDI commands are sent. The necessary delay depends on the speed of your computer, and can be adjusted. If successive notes have the same duration, only the MIDI is sent, which speeds things up. 2 Preparing to use PipeLime =========================== To use PipeLime, the following items must be taken care of (in no particular order). 2.1 MIDI driver --------------- Since Win95 has no built-in interapplication MIDI communication, a 'virtual' MIDI patch cable device driver must be installed. I recommend MIDIYoke by Jamie O'Connel, available free from: http://ourworld.compuserve.com/homepages/JamieOConnell/jsoft.html Install this driver and restart Windows. 2.2 Lime MIDI settings ---------------------- Start Lime and in Hear/Input select 'MIDI Yoke Junction: 1' as the MIDI input device. This is what Lime will listen to for pitch information. 2.3 Lime Keypad settings ------------------------ PipeLime requires a particular combination of keypad mappings. At the moment these are not flexible. Remember to use the numeric keypad keys with numlock on. Using Edit/Keypad Keys ... set up the following mappings key 1 : whole note key 2 : half note key 4 : quarter note key 8 : eighth note key 6 : sixteenth note key 5 : 32nd note key 7 : 64th note key . : 128th note (keypad decimal key) key / : Grace (keypad / key) When you exit Lime, these are saved in C:\windows\lime.ini, so you only need to do this once. 2.4 PipeLime files ------------------ PipeLime requires these 4 files in the same directory: PipeLime.exe : the main program PipeLime.ini : the setup file Grace.def : gracenote definition file Grace.pop : gracenote popup menu definition file When PipeLime exits, it re-writes the ini file to reflect the position and size of the window, MIDI and other settings. Grace.def and Grace.pop may be edited to suit your needs as explained below. 2.5 PipeLime MIDI settings -------------------------- Start PipeLime. In MIDI/Device, select 'MIDI Yoke Junction: 1' for the output device. I think Lime listens on all MIDI channels, so the channel setting shouldn't really matter. Check the MIDI delay setting. It should be 300-400 milliseconds to start. You may be able to reduce it if you have a faster computer. If it is too short, the MIDI info will arrive before the duration settings have 'taken' and notes of strange duration will appear. 3 Using PipeLime ================ 3.1 File Menu: Run Lime - which invokes Lime.exe. If it can't find it, it will allow you to browse for it. This is just for convenience. Exit - saves settings and closes PipeLime. 3.2 Midi Menu: C#/F# - If you want LimeAid to sent explicit C# and F# pitches, (for example, if you're using a D key signature) you can toggle this option in the MIDI menu. Otherwise C and F natural are sent, assuming that the pipe music is being set in Lime with no visible key signature. Device - Selects the MIDI device to which PipeLime sends pitch information, for example a MIDIYoke Junction. Lime should be set to listen to this device. Channel - the MIDI channel on which pitch info is sent. Lime seems listen on all channels, but this is here just in case. Delay - the delay between sending keystrokes and pitch data in milliseconds. All MIDI settings are saved when PipeLime is closed. 3.3 Preferences Menu: Staff Size - spacing between the staff lines in pixels. Adjust to suit your display and mouse finesse. Autorun Lime - if set, PipeLime tries to run the Lime program at startup. These settings are saved, as is the path to Lime.exe. 3.4 Entering notes ------------------ Before entering notes you must set up staves and voices just as in the Lime days of yore, then ... a) Regular melody notes: left-click on the "stafflet" representing the duration you want. If you want a whole note, see c) below. The cursor changes shape as you move the mouse over the stafflets to reflect the current base duration. A note-head moves up and down on the staff to indicate the current pitch. b) Dotted melody notes: shift-left-click on the stafflets. c) Modified melody notes: right-click on a stafflet. A popup menu will appear, allowing you to apply Dot, Cut, DoubleDot, DoubleDur, or Grace modifications to the basic melody note. Dot and Cut are included for convenience. Use DoubleDur on the half-note stafflet to get a whole note. Use Grace to get the 16th and 8th note gracenotes sometimes used in piobaireachd. d) Single gracenotes: left-click on the gracenote stafflet. e) Pitch-specific embellishments: with the notehead on the desired pitch in the gracenote stafflet, right-click. A popup menu will appear. Click on the name of the embellishment you want. You can add embellishments or change their names, see below. f) Non-specific embellishments: shift-right-click anywhere on the gracenote stafflet. An additional, alternative gracenote menu will appear. 3.5 C-natural & F-natural Buttons --------------------------------- Some modern pipe tunes require "flattened" Cs or Fs. Since the regular GHB C and F are really C# and F#, the flattened versions are C-natural and F-natural. Clicking on these buttons causes stafflet clicks on C and/or F to produce C- and/or F-natural in the score. Click again to turn off the flattening. If C#/F# is set in the MIDI menu, a C-nat or F-nat pitch is actually sent. If not, Lime is simply coaxed to display a natural sign in front of the note. 4 Defining Embellishments and Gracenote Popup Menus =================================================== Because a) users may want embellishments organized in different ways, and b) names vary for some movements (e.g. slaps, strikes, slurs, shakes, rolls, peles ...) the gracenote menus in PipeLime are easily customized. The files Grace.def and Grace.pop define the menus and are read in when PipeLime starts. The menus cannot be changed "online". 4.1 Grace.def ------------- When PipeLime starts, it first loads the list of embellishments defined in the file Grace.def. A line in grace.def can be one of: - blank line : this is ignored - comment line : begins with '#', also ignored - definition : consists of CODENAME CAPTION NOTES for example: tar "Taorluath" {GdGe} CODENAME: Identifier for the movement. It is NOT case-sensitive (so 'Tar' is the same as 'tar'), and must not contain spaces, quotes, '{', or '}'. If the same identifier is used more than once in the file, the last occurance is used. A warning will be displayed. CAPTION: The name that will be shown in the popup menus, flanked by " ". If you wish to use the codename as the caption, simply put "". NOTES: Gives the pitch sequence of the embellishment. PipeLime now uses the 'abc' representation of pitches. From low G to high A, the pitches are: G A B c d e f g a. The notes must be enclosed by {}. Grace.def is an ASCII text file. If you edit it with a word processor, be sure to save it in plain ASCII format. Use spaces, not tabs, to line things up. Embellishments can occur in any order in the file. I have included the file bmwcodes.txt which contains a list of embellishments definitions with the codenames used in Bagpipe Music Writer. This list was compiled by Rob de Boer for use with his BMW-to-abc converter program available at: http://famdeboer.www.cistron.nl/bagpabc.html It is meant to get you started, but has not been carefully checked by me. 4.2 Grace.pop ------------- The popup menus which give access to the embellishments in grace.def are defined in the file grace.pop. PipeLime expects to see definitions for 10 menus - 9 pitch-specific ones and one auxilliary menu. You can of course put whatever you want in any of the menus. Let's look at an example: GraceMenu LowA < the start of the LowA menu dbla < the first menu item, the low A doubling Submenu "Birls" < a submenu with the caption "Birls" abr < an item in the submenu brl < another item gbr "Fancy Birl" < a third item, the default caption has been overridden. endsub < end of the submenu endmenu < end of this popup menu - Grace.pop can contain blank and comment lines as in grace.def - 'GraceMenu' must be followed by one of : 'LowG', 'LowA', 'B', 'C', 'D', 'E', 'F', 'HighG', 'HighA', 'Extra' Case matters. The order in which the menus appear in the file does not matter. 'Extra' corresponds to the auxiliary menu activated by shift-right-clicking anywhere on the gracenote stafflet. - A menu item consists of a codename (from grace.def) and optionally a new caption. If no caption is provided, the default caption from grace.def is used. If the codename is not present in grace.def, a warning is displayed and that menu item is disenabled. - If you want a do-nothing placekeeper or label in a menu use the codename 'null'. - 'Submenu' must be followed by a caption in quotes. - Items in submenus are defined as at the top level. - Submenus may be nested. Each level of submenu is terminated by endsub. Grace.pop does not have to use all the definitions in grace.def. So you can maintain a big list of embellishments, but only put the ones you want into the popup menus. You can also use the same embellishment in different popups if you so-desire. PipeLime's 'menu compiler' code does not yet have much error-checking, so make sure your menus are correct or nasty things may happen. Grace.pop is an ASCII text file. Use spaces, not tabs. The version of the file supplied with PipeLime should cover almost all common Highland gracenoting. If you ever want to enter an embellishment not defined in grace.def, or not used in grace.pop, you can of course enter the pitches individually by left-clicking on the gracenote stafflet. 5 Administrivia =============== 5.1 Feedback ------------ Please let me know how you like this program and if you have any suggestions. I'm more interested in getting the ergonomics right than in adding too many fancy features. Reports of bugs also highly encouraged, of course. 5.2 The fine print - PipeLime is 'Tuneware' ------------------------------------------- This program is © Ewan Macpherson 1998. I have spent quite a lot of time writing PipeLime, and in fact had to pay real money for the software component which sends the keystrokes to Lime. I don't expect people to send me money (although feel free!), so PipeLime is 'Tuneware'. Please e-mail me some of the tunes you set in Lime and, if you like, I will make them available on-line at my WWW Bagpipe Index web page: http://www-personal.umich.edu/~emacpher/pipes.html The more the merrier - get busy! 5.3 Disclaimer -------------- Oh, and use PipeLime at your own risk; I'm not responsible, etc, etc ... 5.4 Technical details --------------------- PipeLime is written in Borland Delphi 2 (visual object Pascal, if you will). It uses a freeware MIDI output component written by David Churcher: http://www.netcomuk.co.uk/~dave.ch/midisoft.htm and a modiied version of the SendKeys component from FredsterWare http://www.fredsterware.com/ 5.5 Acknowledgments ------------------- Many thanks to David Williams for prompting me to take on this project and for his useful feedback during the development of PipeLime.