Abstract, System Requirements, Player Piano, Piano Keyboard, Music Editor, Debugger, Music Notation, To HotSync® Data, To Install, To Uninstall, To Register, Legal Stuff, Bugs/Features, Contact Information, Links, Distribution Files, Notes to CASL Programmers
TuneTapper is a Player Piano, a Piano Keyboard, a Music Editor, and a Music Debugger.
User Profile | Features | Price |
Musician: Looking for a way to compose and fine tune melodies | Compose your song on a 6 octave keyboard with complete tempo and note length settings. Fine tune your song by playing back all at once, or 1 note at a time, with back step or in-line editing possible at any point. QuickBasic® Play function format is easy to learn. | Demo for free, and if you like it, the registered version is $12, and includes some advanced debug features |
Gadgeteer: "Look, my Palm™ device can play the Star Trek Theme!" | Plays songs formated in QuickBasic® Play function format. This makes the player piano compatible with the large body of songs on the internet, and allows users who may be familar with this notation to leverage their knowledge. Songs can be imported from internet with Palm™ Memo Pad app. 34 songs are provided in distribution file. | You'll never pay a cent more than free, and that's ok. If you'd like to have more than 2 songs loaded in at once, consider the $12 registered version. |
CASL Programmer: Looking for a way for your new game to play some music sequences | Allows you to create songs which can by played by your programs. All source code provided including a 3 kB module for playing TuneTap formatted songs. | Happy to provide for free. Please don't charge anyone else for these features. |
Version 1.x provides the following improvements over version 0.3:
Compatible with all Palm Computing® connected organizers (Palm™ OS1 not personally tested). Program requires CASL runtime 2.65 or higher, and library files MathLib.prc, LFSLib.prc, and CASLMenuLib.prc, included in this distribution. |
Memory requirements:
Program file is 42 kB. An additional 56 kB are required, if CASL runtime (42 kB), and library files, LFSLib.prc (9 kB), and CASLMenuLib.prc (1 kB), and slmLib.prc (4 kB) are not already on your Palm™ device, making the total memory requirement 98 kB.
For those interested, TuneTapper is written in CASL. The prc program file is p-code that must be interpreted by the CASL runtime in order to run on your Palm™ device. This is similar to how Visual Basic and Java require a runtime. CASL can also make calls to external libraries. TuneTapper makes use of 3 external libraries.
For HotSync® capability, CASL conduit and related files must be installed. Compatible with any Win32 PC (Windows® 95, Windows® 98, and Windows® NT).
Memory requirements:
Approx. 360 kB.
You may use Mac platform for installing Palm™ device version of program and if necessary CASL runtime and library files onto your Palm™ device. However no Mac version of CASL conduit for HotSync® capability is provided. See Windows requirements for memory requirements.
The program first starts up with
the main Player Piano screen. Shown is the song title
(blank if no song data), selector list of songs (not
shown if no data), and option buttons. The program
is in "Ready" mode. From here you can select
songs for playback, switch to the Piano Keyboard screen,
or switch to the Music Editor screen. Since playback and compilation of songs can take more than the maximum 3 minute auto-off Preferences setting, TuneTapper at startup disables the auto-off setting of your Palm™ device. TuneTapper at shutdown returns the auto-off setting to the factory default 2 minutes. Caution: Be careful not to leave TuneTapper on for extended periods or you'll drain your batteries. Starting another application will return your auto-off setting. The user options in detail: |
[Play] | First select a song
in the song selection list. The selected song is shown
above the selection list. Tapping Play plays back the selected song. Status indicator displays "Playing..." while in playback mode, and displays "Ready" when song play is completed. Real time play back is accomplished by compiling the QB Play text into low level TuneTap text, and then playing the TuneTap text in real time. As there is a compilation delay before play back, a progress bar showing percent compiled is displayed during compilation. TuneTap text allows for more efficient retrieval of each note's pitch, duration, and period until next note, and therefore 100% accurate timing during play back. The compiled TuneTap version of song is stored, and on subsequent plays the song is played directly, without the need to recompile. Tip: To avoid unnecessary recompilations, whenever possible use the Piano Keyboard for composing songs. When using the Music Editor, use the [Discard] option when you didn't make any changes. Tip: If you want to avoid the compilation delay before playing a new song, and don't mind a play back delay between notes, use the [x]Debug [Play], [Play] mode. Tip: If a syntax error is detected, tap the [Edit] button, and the cursor will be auto-positioned at error position (registered version only). |
[x] Debug | With this checked, play back is in debug mode, and each note's timing and pitch settings are shown as the song is played back. This might help identify where a melody needs further refinement. See Debugger for details. |
[Cancel] | This button appears while in playback mode, and aborts playback, returning to "Ready" mode. |
[Create] | Switches to Piano Keyboard screen and allows you to input new melody. See Piano Keyboard for details. |
[Append] | First select a song
in the song selection list. The selected song is shown
above the selection list. Tapping Append takes you to the Piano Keyboard, and recorded notes will be appended to (added to the end of) the selected song. See Piano Keyboard for details. Tip: If you're in the habit of using the keyboard append technique to add to songs, you'll see that a full set of settings are added at the start of each append session. If the previous settings are the same, you could delete the redundant settings with Music Editor. |
[New] | Switches to Music Editor screen and allows you to input new melody in text form. See Music Editor for details. |
[Edit] | First select a song
in the song selection list. The selected song is shown
above the selection list. Tapping Edit takes you to the Music Editor, with the selected song loaded into the editor. See Music Editor for details. Tip: If a syntax error was detected while trying to play song, tap the [Edit] button, and the cursor will be auto-positioned at error position (registered version only). |
All menu options are global (they're shown with all screen views), however the Song and Help options are only active from the main Player Piano screen. The Edit options are only active from the Music Editor screen.
Song | Delete | First select a song in the song selection list. The selected song is shown above the selection list. Tapping Song | Delete deletes the song from the static database. There's a confirmation message first. | ||||
Song | Delete All | Deletes the entire
song database. There's a confirmation message first.
After deleting database, there is an option to:
|
||||
Help | Help | Help screen | ||||
Help | About | Program version, author, and update information |
This screen shows the title of the
current song (blank if creating new), the last 24
characters of recorded song (blank if nothing recorded),
keys to adjust timing and pitch settings, and a piano
keyboard including a pause (rest) key. All settings from
previous session are restored. Display on right side of keyboard is the number of measures played. A measure is considered equivalent to a whole note. For example, 4 * 1/4 notes is a measure. Display is to nearest full 1/16 note. Internally the number of beats is measured in 1/64 notes. For display 3/64 = 0/64, 4/64 = 1/16. This was felt to be reasonable compromise since 1/32 and 1/64 notes are rarely used, and it's easier to read common notes like 1/4 and 1/8 in beats of 1/16, rather than 1/64. |
[x] Pen | Checking this toggles between Experimentation mode (pen up) and Record mode (pen down). While in Record mode the settings are recorded to the song text, after each note or pause key is tapped. Timing and pitch settings are only recorded when they change from previous note or pause. |
[Discard] | Returns to main Player Piano screen. All song text is discarded. |
[Save] | Returns to main Player Piano screen. All song text is stored in static
song database. If the song is new, you'll be prompted to
enter a unique song title. The title may contain spaces. Tip: The standard Palm™ edit shortcut strokes will work while the title dialog box is displayed, and therefore you can paste a title into the textbox with paste shortcut, /P |
[Lnn] | Length of note. Legal values are 1, 2, 4, 8, 16, 32, 64, signifying notes of 1/1, 1/2, 1/4, 1/8, 1/16, 1/32, and 1/64. With the Music Editor any value 1-64 may be specified, see description of QB Play notation for details. |
[Tnnn] | Tempo of music. Number of 1/4 notes per minute. Legal values are 45 - 255, in increments of 15. With the text editor any value 32-255 may be specified, see description of QB Play notation for details. |
[1.0,1.5] | Note multiplier. Legal values are 1 and 1.5. 1.5 setting increases the length of note by 3/2. 1.0 setting has no effect on length of note. |
[Mc] | Mode of play. Defines the duration the note will be played. Legal options are Legato (long), Normal, and Staccato (short). See Translating Time and Pitch settings into Music for details. |
[P] | Pause (rest).
Specifies a rest of length L should be played. You'll see
the displayed song text will be appended with pause token
preceeded with any setting changes. Tip: For readability, a space character is inserted after each measure. |
[On] | Allows you to change
octave. 0 is lowest octave, C is 131 Hz. 6 is highest
octave. Middle C is at the start of octave 1.
During recording, if the Octave setting changes by +/-1, the relative octave change notation codes are used, ">", and "<". This allows a songs starting octave to be easily edited, and normally other octave changes will automatically keep their relative settings. See description of QB Play notation for details. |
[A-G#] | Full single scale
piano layout ls displayed (C, C#, D, D#, E, F, F#, G, G#,
A, A#, B, C). Tapplng keyboard note will play indicated
note for the duration setting, and you'll see the
displayed song text will be appended with indicated note
token preceeded with any setting changes. Tip: For readability, a space character is inserted after each measure. |
Period between notes, ms | When recording a
song, the time between actually tapping the notes is not
recorded. During playback, the time between notes
will be defined by the L, T, and [1.0, 1.5] multiplier
settings. Period = Length of note as multiple of 1/4 notes * ms per quarter note * multiplier. In format of settings = (4 / L) * (1000 * 60 / T) * [1.0, 1.5] multiplier. Specs: The shortest period possible is 14.7 ms (L=64, T=255, [1.0]). The longest period possible with keyboard is 8,000 ms (L=1, T=45, [1.5]), and with the editor you could have periods of 11,250 ms (L=1, T=32, [1.5]). |
Duration of note played, ms | When recoding a song,
and during playback, the note play duration is defined by
the L, T, [1.0, 1.5] multiplier, and M settings.
The length of time you tap a note has no bearing on the
note duration played. Duration = Percentage of Period. When mode = Legato, Duration = 1 * Period, when mode = Normal, Duration = 3/4 * Period, and when mode = Staccato, Duration = 1/2 * Period. Specs: The shortest note duration possible is 7.4 ms (1/2 * 14.7). The longest note duration possible with keyboard is 8,000 ms, and with the editor you could have a note duration of 11,250 ms (see Period). |
Pitch, Hz | When recoding a song,
and during playback, the note pitch is defined by the O
setting and Note tapped. Over the 12 equally spaced notes in a chromatic scale, the pitch geometrically doubles. The A note of octave 1 with middle C is defined as 440 Hz (exactly). Halfing as we go down in octaves, the A note below octave 0 is 110 Hz. In general for any note N = 0-12 (C-B) in Octave O = 0-6, the Pitch = 110 * 2 ^ (((O * 12) + N + 3) / 12). The 3 offset is because the A note is N=-3. The start of an octave is note C, N=0. Specs: The lowest note is C of octave 0, which is 131 Hz. The highest note possible with keyboard is high C of octave 6, which is 8372 Hz. This is a range of 0 through 5 full chromatic octaves plus the C of octave 6, which is 73 notes ((6 * 12)+1). With the editor you can play all notes up to B of ocatve 6, however the Palm speaker seems to cutoff at about F of octave 6, 11,175 Hz. |
This screen shows the title of the current song (blank if creating new), and a large textbox containing the entire song represented in QuickBasic® Play function notation. |
[text area] | Work with like the Palm™
Memo App. See description of QB Play
notation for details on
codes and their meanings. Tip: Text can be entered in upper case or lower case. Tip: For readability, text created with Piano Keyboard will have a space character inserted after each measure. |
[Position] | Shown only when no syntax error is
known. Tapping will display cursor position at entry, and
current cursor position. When entering from Music
Debugger, registered version will auto-position cursor at
current point in song. To understand positions, consider the text string, "abcdef". Position 0 is before the a, position 1 is before the b, etc. Hint: Freeware...repeated hunt and peck... |
[Error] | Shown only when a syntax was
recently detected while trying to play song. Tapping will
display error position and message again. Current cursor
position also displayed. Registered version will
auto-position cursor. Hint: Freeware...repeated hunt and peck... |
[Discard] | Returns to main Player Piano screen. All song text changes are
discarded. Tip: To avoid unnecessary recompilations, use the [Discard] option when you didn't make any changes. |
[Save] | Returns to main Player Piano screen. All song text changes are stored in
static song database. If the song is new, you'll be
prompted to enter a unique song title. The title may
contain spaces. Tip: The standard Palm™ edit shortcut strokes will work while the title dialog box is displayed, and therefore you can paste a title into the textbox with paste shortcut, /P |
Edit | Undo | Undoes last edit command. |
Edit | Cut | Inserts selected text into clipboard. Good for exporting music text to Palm™ Memo application, or moving music text in song. |
Edit | Copy | Inserts a copy of selected text into clipboard. Good for exporting music text to Palm™ Memo application, or copying music text, for example a chorus, to another point in song. |
Edit | Paste | Inserts the clipboard contents into music editor at cursor point. Good for importing music text from Palm™ Memo application, or inserting music text to another point in song. |
Edit | Select All | Selects all text in Music Editor. |
Edit | Keyboard | Displays Palm™ keyboard. |
Edit | Graffiti | Display Palm™ Graffiti® help screen. |
Since the Player Piano plays any song in the QB Play function notation, songs downloaded from the internet will play. There is a large body of such songs on the internet.
Should you want to get a song on your PC into your TuneTapper database, first paste the text into a new memo of your Palm™ Desktop program. Second, perform a HotSync so the memo is now on your Palm™ Device. Selected Memo text can be pasted into the Music Editor of TuneTapper. The reverse will allow you to transfer songs to your PC.
Tip: Paste both the title and song text into the Music Editor. Cut the title out of the song text. Tap Save, and you can use paste to enter the title.
The text files, QB_Tunes?.txt, contain 34 songs I've found on the internet. They are included in the zip distribution file. Contents of song files:
A helpful link to start your own search is http://www.qbasicfiles.8m.com/.
If you come with anything new, please send me an email.
This screen shows the title of the current song, the next 24 unplayed characters of the recorded song, and displays all QB music settings as each note is played, similar to the Piano Keyboard. |
[Play] | Plays back the song
until it's done, or you tap [Stop]. This is accomplished by interpreting the stored music text in real time by keeping track of time and octave settings, and playing notes. See QB Play Notation for details. Playback is slowed down by the need to parse each QB token, and continuously update screen. When song finished, debugger is reset with song at start postion. Tip: If a syntax error was detected while trying to play song, tap the [Edit] button, and with the registered version, the cursor will be auto-positioned at error position. |
[Stop] | Pauses play back.
Play can be continued at this position in song by tapping
[< Step], [Step >] or [Play]. Tip: To reset song play back to start, tap [Done], [Play]. |
[Step >] | Parses and plays a
single QB token. Play can be continued at this position
in song by tapping [< Step], [Step >] or [Play]. When song finished, debugger is reset with song at start postion. Tip: If a syntax error was detected while trying to play song, tap the [Edit] button, and with the registered version, the cursor will be auto-positioned at error position. |
[< Step] | Undoes the last token
parse. Play can be continued at this point in song by
tapping [Step >] or [Play]. Registered version allows
16 levels of undo; freeware version 2. Hint: Freeware...1 step forward, 2 steps back... |
[Edit] | Loads song into Music Editor. With registered version, the cursor is
inserted at current play back position of song. On [Save], Debugger is reset with song at start position. On [Discard], Debugger is at pre-edit state. |
[Done] | Returns to main Player Piano screen. |
The music notation is how you control the behavior of the Player Piano, and with respect to the play back of single notes, also defines the behavior of the Piano Keyboard. The notation used by TuneTapper is the same as that used by the QuickBasic® Play function.
The QuickBasic® documentation appears below in new courier font. QuickBasic® is a product of Microsoft Corporation. Some annotation by the author is provided in normal font.
PLAY commandstring$
commandstring$ | A string expression that contains one or more of the following PLAY commands: |
Octave and tone commands:
Ooctave | Sets the current octave (0 - 6). |
< or > | Moves
up or down one octave. ">" = +1, "<" = -1 |
A - G | Plays the specified note in the current octave. |
Nnote | Plays a
specified note (0 - 84) in the seven-octave range (0 is a rest). The Nnote notation is never used when creating songs with the TuneTapper Piano Keyboard. It is supported by the Player Piano as follows. For notes A-G# followed by 0-84, for example G16, the number is interpreted as a note length in a similar way the L notation is. In the case of G16, a G note is played as a 1/16 note. Numbers from 65-84 are interpreted as 64. The number does not change the current L setting. Number 0 is interpreted as a pause of length L. |
Duration and tempo commands:
Llength | Sets the length of each note (1 - 64). L1 is whole note, L2 is a half note, etc. |
ML | Sets music legato. |
MN | Sets music normal. |
MS | Sets music staccato. |
Ppause | Specifies a pause (1 - 64). P1 is a whole-note pause, P2 is a half-note pause, etc. |
Ttempo | Sets the tempo in quarter notes per minute (32 - 255). |
See Translating Time and Pitch settings into Music for how the Player Piano interprets the ML, MN, and MS settings with regard to note play duration.
Although the Piano Keyboard writes with a subset of the L and T settings, the Player Piano supports all settings. This means any legal settings entered with Music Editor will play correctly. Any QBasic formatted song downloaded from the internet or otherwise obtained, will play correctly.
Mode commands:
MF | Plays music in foreground. |
MB | Plays music in background. |
MF and MB are ignored by the Player Piano. All music is played in a timer loop which allows monitoring for user cancel.
Suffix commands:
# or + | Turns preceding note into a sharp. |
- | Turns preceding note into a flat. |
. | Plays
the preceding note 3/2 as long as specified. The "." suffix is what the [1.0, 1.5] Multiplier setting of the TuneTapper Piano Keyboard changes. The "." suffix is parsed after standard note A-G#, and note form Ann-G#nn, and pause Pnn. |
The Piano Keyboard always writes with the "#" suffix format, but the Player Piano supports all suffixes.
Any space characters (ascii 32) in the song string are ignored by Player Piano, and therefore may be added by Music Editor for clarify. Song strings downloaded from internet containing spaces, will play correctly. The exception is a song cannot have a space as its first character.
If a song contains no time settings before notes are encountered, the notes are played with length=4, tempo=240, and multiplier=1.
All letter codes are interpreted by Player Piano as case-insensitive (g=G, t=T, ect).
You must first have installed and registered the CASL Conduit.
Place Palm™ device in HotSync cradle, and push the HotSync button on cradle. TuneTapper data will be transfered bidirectionally.
Note: If you have more than one Palm™ device registered with your PC, TuneTapper data will always be transferred to the user who performed the last HotSync operation.
Note: You cannot change the bidirectional nature of the TuneTapper HotSync. The CASL Conduit overrides the settings of the 3Com HotSync utility.
The advantage to performing a HotSync on your data is that it's backed up on your PC. Since no PC version of TuneTapper is provided, there's no way to edit data on the PC side for transferring to your Palm™ device. It is not recommended that the TuneTapper db's be edited with a text editor, (although one could).
See Transferring Songs between your PC and TuneTapper.
No fancy installation program is provided, so the following manual instructions must be followed.
If you're reading this, you've probably already done this. On your desktop system, open the tunetapper03.zip file with your zip file archive program.
Note: Can't read zip files? For Windows users, you can get a copy of WinZip™ (shareware) at WinZip. For Mac user, you can get a copy of ZipIt™ (shareware) at ZipIt.
Use the extract action of your zip archive program, and extract all files to any folder (directory) you choose. It's recommended to use a new folder "TuneTapper".
If you extract to an existing folder, and if you get a File Overwrite confirmation dialog, click Yes only if the "Replace file" is older than the "With file".
Caution: Overwriting an existing CASL system file with an older file could result in a loss of CASL functionality and/or loss of CASL bug fix.
Start up your Palm™ device. On the main screen, and with the "All" category selected, do you see the TuneTapper icon?
Start TuneTapper.
If you want to save any songs, copy them out of the Music Editor and paste them into Palm™ Memo Pad documents.
Use menu command, Song | Delete All to delete existing song database. Select the Uninstall option. Exit program by tapping silkscreened Applications button. (The new version of TuneTapper will install over the old version. It's not necessary to delete old version of program.)
Caution: New database structure is incompatible with old structure. Not deleting old database before loading in new version of program, will result in a soft reset when you start TuneTapper. Should you get into this bind, load the dbMan2.prc file onto your Palm™ device, and use to delete the "ttSongs" database. dbMan2 requires the CASL Runtime on your Palm™ device to run. See steps 2.2 and 2.3 for details.
On the main screen, and with the "All" category selected, do you see the CASLrt icon (CASL runtime)?
If you do not yet have the CASL runtime installed, or you have a version older than 2.6.7 (see step 2.1), use standard Palm™ device install Tool and with "Add..." button specify file:
Note: Substitute your [installation drive and folder] for "c:\TuneTapper" if you chose a different drive or folder.
The CASL runtime undergoes periodic updates, and no attempt is made to keep the supplied CASL runtime up to date. For the latest version of the CASL runtime, you can download from http://www.caslsoft.com/download/CASLrt.zip.
With the Palm™ device install Tool and with "Add..." button specify files:
Note: There are no version compatibilty risks, even if library files previously installed.
With "Add..." button specify file:
Afterwords, TuneTapper icon will appear on your Palm™ applications screen.
Optional: You only need to do this step if you want to back up your Palm™ TuneTapper data onto your Win32 machine during normal Palm™ HotSync operations.
If your harddisk does not already have the folder, create a folder with name "c:\Program Files\CASLsoft\CASL2". It is strongly recommended you use exactly this folder name as a central location for all CASL system files, to ease version control.
Copy following files from "c:\TuneTapper\" to "c:\Program Files\CASLsoft\CASL2"
If you get a File Overwrite confirmation dialog, click Yes only if the "Replace file" is older than the "With file". Otherwise, click No.
Caution: Overwriting an existing CASL system file with an older file could result in a loss of CASL functionality and/or loss of CASL bug fix.
The following files must be in your c:\Windows\System folder.
They are in all likelyhood already on your machine. They are very large (total 1.3 MB) and therefore are not included in zip distribution file. If you need these files you can download from my Palm™Apps page.
You need to run the CASL conduit registration utility CondReg.exe with the path to the CASL conduit DLL CASLcn20.dll specified on the command line. Create a Windows Shortcut with the following command line (or enter the following in the Start | Run command line, or at a DOS prompt):
CondReg.exe "c:\Program Files\CASLsoft\CASL2"
Note: There is no trailing backslash. If the path name contains spaces, then it will need to be enclosed in quotes.
This will copy the DLL from the specified location to the PalmPilot install directory, and register the CASL conduit with HotSync. The Palm™ HotSync software must be installed first.
1.1. Delete all songs with program menu command. Select uninstall option. If you don't know how, see Player Piano.
1.2. Quit program.
1.3. Use Palm™ Memory application to delete program.
1.4. If not used by any other programs, use Palm™ Memory application to also delete CASL runtime and CASL external library files.
2.1. If you have other CASL programs, you should not perform this step. If you don't have any other CASL programs, you can double click the RemCond.exe icon in "c:\Program Files\CASLsoft\Casl2" folder to remove CASL conduit from windows registry.
After this, you may delete any and all files in "c:\TuneTapper" folder.
The $12 registered version provides the following addional features, gives you free updates, and you'll be encouraging me to keep making improvements. Visit http://home.att.net/~dianfrank/pilot_apps.htm for payment methods.
Feature | Freeware version | Registered version |
Maximum songs that can be stored | 2 |
32 |
Debugger, maximum back steps |
2 |
16 |
Debugger, editor cursor position | Cursor is always at end of song |
Cursor is placed at current play back position in song |
Player Piano, editor cursor position | Cursor is always at end of song |
If error, cursor is placed at error position in song, otherwise at end |
Copyright © October 1999, Frank O'Brien, dianfrank@worldnet.att.net.
TuneTapper name, program, user manual, and source code are copyrighted by Frank O'Brien.
Absolutely no warranty is given.
Palm Computing, HotSync, and the Palm Computing platform logo is a trademark of Palm Computing, Inc., 3Com Corporation or its subsidiaries. CASL is a product of CASLsoft and Feras Information Technologies. Windows and Microsoft are registered trademarks of Microsoft Corporation. Mac is a registered trademark of Apple Computer. Other product and brand names may be trademarks or registered trademarks of their respective owners.
The following is the hybrid freeware/shareware distribution policy.
1. Freeware version of program file and related distribution files, may be distributed as freeware. The freeware version of program file is named: TuneTapper11.PRC.
2. The registered version of program file may only be used by a single registered user. Ownership may be transferred. The registered version of program file is named: TuneTapper11_r.PRC.
3. CASLsoft allows distribution of the runtime, and conduit files on a royalty free basis. The file set is:
4. LFSLib.prc is a freeware CASL external library file from Luicil Fernandes, (c) 1994-99 by LF's Informatica Ltda., www.sigera.com/Palm, lfslib@singera.com, and may be freely distributed. The external library provides CASL with Clipboard, Palm keyboard, and Graffiti help functions. You're not paying anything for its use; a copy is simply included in this archive for your convenience.
5. CASLMenuLib.prc is a freeware CASL external library file from Stephen Millman, and may be freely distributed. The external library provides CASL with menu shortcut stroke functions. You're not paying anything for its use; a copy is simply included in this archive for your convenience.
6. slmLib.prc is a freeware CASL external library file from Stephen Millman, and may be freely distributed. The external library provides CASL with low level control of textbox objects. You're not paying anything for its use; a copy is simply included in this archive for your convenience.
7. The CSL, CPK, CFF source files and the CIC icon file may be distributed under the following conditions:
a. There shall be no commercial use of the source code files, except as allowed in item d.
b. Source code may be modified and distributed. Distributed changes shall be documented with name, type, date, and note in about box. The original author and contact address for registered version must remain in about box.
c. Modified source code and compiled programs resulting from modified source code can only be distributed at no charge.
d. The following files are freeware package files. They have no warranty. They may be incorporated into your programs, but any monetary charge for your program may not include functionality provided by these files:
If you see something wrong or you see something that could be improved, let me know. I'm not a musician (I'm more a mathematician), so I'm sure there's some things I've done wrong, or things I could do better. Let me know what you want. I've had a lot of fun creating this program. Basically composing music reminds me of programming. I've created a music editing system which mimicks modern programming tools. For example the compiler, interpretor, and debugger have their roots in the programming world. I'm not sure this works for those used to composing music, but hopefully it's helpful.
If you'd like to donate any songs you compose, transcribe, or find on the internet, send me an email. I'd be happy to post for download on the TuneTapper web page.
Updates and any songs sent to me will be posted at http://home.att.net/~dianfrank/pilot_apps.htm.
Frank O'Brien, dianfrank@worldnet.att.net.
If you're interested in music and math, check out Dave Rusin's site. He's amazing. Mathematics and Music.
An excellent compilation of music theory and Palm apps by Michael Winikoff, including an app of his own which allows keyboard input of notes and timing, assisted by a metronome, (as opposed to TuneTapper which ignores the timing of inputed notes, and looks instead only at QB settings), http://goanna.cs.rmit.edu.au/~winikoff/palm/music/index.html.
A general coverage of computer music topics, Computer Music Jounal, Published by MIT Press (at Berkley, CA), Douglas Keislar, Editor, http://mitpress.mit.edu/e-journals/Computer-Music-Journal/.
A web site and mailing list (I haven't joined, but looks interesting) for what appears to be people into Palm devices and MIDI music. Lot's of links, http://www.crudites.org/soundventures/handheld-music/.
A helpful link to start a search for Quick Basic® Play formatted songs http://www.qbasicfiles.8m.com/.
Contents of tunetapper11.zip (includes Palm™ program, CASL runtimes, CASL libraries, CASL conduit files, documentation, and documentation images).
CASLCN20 DLL 61,440 10-09-99 6:59a caslcn20.dll REMCOND EXE 24,576 10-09-99 6:59a RemCond.exe CONDREG EXE 24,576 10-09-99 6:59a CondReg.exe TTAPANIM GIF 3,554 11-06-99 9:10p ttapanim.gif TTDEBUG GIF 1,441 11-28-99 5:28p ttDebug.gif TTEDIT GIF 1,143 12-02-99 10:51p ttEdit.gif TTKEYB~1 GIF 1,875 11-28-99 5:27p ttKeyboard.gif TTMAIN GIF 1,216 11-28-99 5:27p ttMain.gif PCP_POS GIF 1,350 02-19-99 9:44a pcp_pos.gif TTANISCR GIF 5,621 12-02-99 10:53p TTAniScr.gif TUNETA~1 HTM 79,754 12-03-99 9:54p tunetapper_doc.htm LFSLIB PRC 8,829 07-25-99 12:43p lfslib.prc SLMLIB PRC 3,627 12-28-98 8:55p slmLib.prc CASLME~1 PRC 999 04-11-99 8:57p CASLMenuLib.prc CASLRT~1 PRC 36,883 05-03-99 9:19a CASLrt_5k.prc CASLRT~2 PRC 42,554 05-03-99 9:19a CASLrt_pro.prc DBMAN2 PRC 7,071 08-03-99 10:31p dbMan2.PRC TUNETA~1 PRC 42,617 12-03-99 9:32p TuneTapper11.PRC QB_TUN~1 TXT 3,830 10-16-99 6:50p QB_Tunes2.txt QB_TUN~2 TXT 3,557 10-16-99 6:58p QB_Tunes3.txt QB_TUN~3 TXT 3,342 10-16-99 6:58p QB_Tunes4.txt QB_TUN~4 TXT 2,099 10-16-99 6:56p QB_Tunes5.txt QB_TUN~5 TXT 3,460 10-16-99 9:55p QB_Tunes1.txt SOURCE~1 ZIP 47,590 12-03-99 9:39p sourcecode_tunetap.zip 24 file(s) 412,889 bytes
Contents of sourcecode_tunetap.zip (includes source code):
TT_DEBUG CFF 4,360 11-28-99 9:58a tt_Debug.cff TT_MAIN CFF 3,115 11-11-99 8:12a tt_Main.cff TT_KEY~1 CFF 4,339 11-28-99 10:11a tt_Keyboard.cff TT_EDIT CFF 2,250 12-02-99 7:33a tt_Edit.cff TUNETA~1 CIC 150 01-25-98 4:48p TuneTapper.cic TUNETA~1 CPJ 13,338 12-03-99 9:35p TuneTapper.cpj TT_KEY~1 CPK 13,168 11-28-99 3:58p tt_Keyboard.cpk TT_EDIT CPK 5,934 12-03-99 7:50a tt_Edit.cpk TT_MENU CPK 1,061 11-27-99 2:15p tt_Menu.cpk TT_DEBUG CPK 10,280 12-03-99 7:34a tt_Debug.cpk TT_PRO~1 CPK 4,164 12-03-99 9:34p tt_ProgramInfo.cpk CASLERR2 CPK 2,058 03-22-99 7:39p caslerr2.cpk QBPLAY CPK 29,730 12-03-99 7:54a QBPlay.cpk PLAY CPK 2,788 11-27-99 2:11p Play.cpk MSGBOX CPK 7,191 11-13-99 12:41p MsgBox.cpk SLMLIB CPK 2,184 11-13-99 12:07p slmlib.cpk SELECT~1 CPK 5,342 10-16-99 5:35p SelectItem.cpk CASLME~1 CPK 1,249 10-16-99 11:52a CASLMenuLib.cpk LFSLIB CPK 1,160 12-02-99 9:08p LFSLib.cpk GETTEXT CPK 4,199 10-15-99 10:34p GetText.cpk GETNUM CPK 5,049 10-10-99 9:22p GetNum.cpk ERRORM~1 CPK 1,512 07-13-99 10:24p ErrorMessage.cpk PROGRE~1 CPK 2,562 11-13-99 1:41p ProgressBar.cpk EXPMATH CPK 1,574 11-27-99 3:12p ExpMath.cpk TT_MAIN CSL 18,754 12-03-99 9:34p tt_Main.csl README TXT 471 08-02-99 9:02p readme.txt 26 file(s) 147,982 bytes
You could use TuneTapper to create songs for your own program. Your program will need to have a string defined with the TuneTap version of each song. Each song can be played by your program by including the Play.cpk file, and using the py_PlaySong(string song) function.
See py_Play.cpk file for details on py_PlaySong function.
The easiest way to get the TuneTap version of each song, is to load the PC version of the "ttSongs.cdb" file into NotePad. Copy the TuneTap data strings you want into your program. The "ttSongs.cdb" file is in your "pilot\[user]\CASL" folder.
The following is an example of "ttSongs.cdb" file with 1 song record:
#CDBID: CASL
#MAJREV: 2
#MINREV: 0
#FLDCNT: 3
#RECCNT: 1
#SYNCMODE: MERGE
#FLDNUM:1 TYPE:S SIZE:0
#FLDNUM:2 TYPE:S SIZE:0
#FLDNUM:3 TYPE:S SIZE:0
0x00765001,0x0000,"Scale","MLT240L4O1CDEF
GAB>C","00262,0125012500294,0125012500330,0125012500349,0125012500392,0125012500440,0125012500494,0125012500523,01250125"
Each song record has 3 fields; the title, the QB text string, and the TuneTap text string. The CASL IDE Reference Manual (and Win Help file) has more information on cdb database structures.