Home
Reference Manual - Ohio State University: Music Cognition
Contents
1. It might be possible to do some messy manipulations using triggers and the MSPB parameter making the time between the first two tones in the cycle effectively simultanous by setting MSPB to 1 millisecond to simulate multiple effectively simultaneous tones Also using the MET_CHAN_ARRAY parameter in conjunction with clever program ming of a polytimbral and stereo tone generator might allow better handling of the joint beat as well as possible left ear right ear separation of the components of the pacing signal 19 4 6 Triggers A trigger event is a metronome beat keystroke number or elapsed time which causes an immediate change in an integer valued parameter Triggers are specified by the keyword TRIGGER followed by 5 obligatory fields The first field following the word TRIGGER is a unique trigger ID for identification in the output file followed by the trigger type K eystroke T ime or M etronome The fourth field is the count for the trigger elapsed milliseconds for time triggers keystroke number for keystroke triggers and metronome count for metronome triggers and the next two fields are the name of the integer parameter to change and the new value A special pseudo parameter END_EXP can be used in a trigger specification to terminate an experiment it is followed by an arbitrary but obligatory integer An unparseable or incorrect trigger specification will print a message to the screen if your
2. FEED_ON FEED_CHAN 1 FEED_NOTE 76 FEED_VMODE 1 FEED_VEL 90 FEED_LEN 100 FEED_PMODE 1 FEED_DMODE 1 FEED_DVAL 275 METRON_ON 1 MSPB 250 MET_CHAN 1 MET_NOTE 86 MET_VEL 100 MET_LEN 30 MET_PATTERN_ARRAY 811110110 TRIGGER 1 M 32 FEED_ON 1 TRIGGER 2 M 32 METRON_ON O TRIGGER 3 M 92 END_EXP 0 25 5 5 Split keyboard Randomized delay to keystrokes on right side of keyboard no delay to keystrokes on left side of keyboard Terminate the trial with lt ctrl C gt FEED_ON 3 FEED_CHAN 1 FEED_VMODE 0 FEED_LEN 0 FEED2_0N 2 FEED2_CHAN 1 FEED2_VMODE 1 FEED2_VEL 100 FEED2_LEN 100 FEED2_PMODE 0 FEED2_DMODE 2 RANDDELAY_ARRAY 6 100 150 200 250 300 350 SPLIT_POINT 60 6 Important Program Limits FTAP has a number of hard wired limits if these are a problem you can change the numbers in the source and recompile see src ftaplimits h The one which is most likely to be a problem is the number of stored events FTAP does not do any disk I O while a trial is running to avoid the timing overhead All data keystroke metronome and feedback events is stored in memory until the end of a trial The space for this is allocated statically to avoid any overhead of memory allocation a maximum of approximately 7500 notes can be stored with the default allocation 1 MAXNOTES 15000 Maximum number of stored events with separate allocations for input keystroke and output feedback and metronome events Note that NoteOn
3. Most of these mapping characteristics are independent and can be freely manipulated and com bined Extension of mapping modes beyond what is provided here can only be done by modifications to the C source code but this is fairly straightforward see Appendix H 1 FEED_ON If set to 0 there will be no auditory feedback that is no MIDI output in response to keystrokes and hence no sound If set to 1 feedback is turned on Values of 2 and 3 relate to the use of multiple feedback channels and a keyboard split see Section 4 7 2 Default 1 2 FEED_CHAN The MIDI channel to be used for feedback 0 means the input value from keystrokes will be unchanged while values from 1 16 will send the feedback out on the specified MIDI channel MIDI channel control allows specification of different sounds with a polytimbral tone generator Default 1 3 FEED_LEN The length in milliseconds of the feedback tone A value of 0 means that the user s key down and key up times are followed sound will occur for a duration equal to the time the key is held down A non zero value means that the feedback will sound for that 12 number of milliseconds When a non zero length is used both the NoteOn and NoteOff output events will be scheduled at time of keypress Default 0 FEED_PMODE Pitch mapping types These must be specified as integers in the parameter file but are provided here along with their internal designation for convenience
4. Trig Gers oes os 005 ak Se ely Se So ih en OD a Be a oe el 20 4 7 2 Feedback Channels ee 21 5 Sample Parameter Files 5 1 5 2 5 3 5 4 5 9 demo ke o io e Bde ghee ree aE Se Modified keythru sample experiments aschersleben sample experiments finn 99 275 Split keyboard 6 Important Program Limits 7 Output File Format 7 1 7 2 7 3 7 4 7 5 7 6 7 7 Comment Lines Parameters and Output Diagnostics Data Line Format o Note Data ita aa Bide ee e MIDI Controller Data Trigger Events taa Edt a ae MIDI Hardware Errors Data Filtering And Transformations 8 Troubleshooting 9 Installation Millisecond resolution Data Collection 9 1 9 2 9 3 9 4 9 5 9 6 Root Privileges a eoe nere anera aneen aa General Concerns ooa e Hardware and Linux Configuration Issues 9 3 1 Gar djs and Drivers ia a do Tested Card Driver List ALA SUCCESS ot era A A A E eel peas On line Diagnostics o e MIDI Throughput Benchmarking A Revision History 23 23 23 24 25 26 26 27 28 29 30 31 32 32 33 33 33 34 34 35 35 36 37 37 38 38 38 38 39 40 Distribution Bill Dimers eree SPS A ES A Gt a ie AA le A Ge a eS Bi2 dots siden Se ae OE Sao bE oe BS ae ee ee a eee eal Big
5. A good rule of thumb is Unless you know exactly why you need to use the second feedback channel don t And if you do use it try to avoid fancy pitch and delay alterations and don t rely on use of MIDI controllers 1 Fixed pitch sequences FEED_PMODE 5 The sequence file is shared by the two channels 2 Pitchlag FEED_PMODE 7 Currently you cannot do independent pitch lag alterations on the two channels 3 Random pitch mods FEED_PMODE 4 4 Random delay there s only a single random delay array specification RANDDELAY_ARRAY though it can be selectively applied to one or both channels 22 5 Sample Parameter Files This section contains examples of some parameter files More are included in the params directory of the distribution 5 1 demo keythru Just output on MIDI channel 1 whatever the person plays for 10 seconds as in normal music performance This just demonstrates that you can collect performance data without doing any funny stuff Setting FEED_ON to zero would allow investigating performance in the absence of auditory feedback FEED_ON 1 FEED_CHAN 1 FEED_PMODE 0 FEED_VMODE 0 FEED_LEN 0 METRON_ON 0 TRIGGER 1 T 10000 END_EXP 1 5 2 Modified keythru File for a music experiment in which keystrokes are delayed by 250 ms and also sound a random pitch as in Finney 1997 Terminate the trial with lt ctrl C gt FEED_ON FEED_CHAN FEED_VMODE FEED_LE
6. When FTAP terminates it will print out timing diagnostics such as the following Mean time between sched s ms 0 01 schedcnt 194077 gt ims 1 gt 5 ms O gt 10 ms O max 2 ms If there are many times gt 1 ms or the maximum is greater than 3 ms or so then your system configuration is not achieving adequate real time If you are trying to collect data make sure FTAP is running as setuid root and try to make sure your Linux system is running with as few processes as possible 38 NOTE if click files are being used to play output during an experiment and if there are multiple 3 or more precisely simultaneous output events the above diagnostics will consistently show some inter sched times of 2 or 3 milliseconds Although I have not isolated the exact source of this my hypothesis is that it is due to the apparent use of a busy loop within the 4Front driver It would be interesting to see whether the problem occurs with the ALSA drivers which supposedly do not use a busy loop See Section E for some details on implementation that may help clarify these diagnostics 9 6 MIDI Throughput Benchmarking See Finney 2001b for more detail The above diagnostics only test the internal scheduling of FTAP they cannot test the speed and functionality of the MIDI interface hardware and software MIDI hardware bandwidth is approxi mately 30 Kbytes at 3 bytes for each note on or note off message this gives a maximal
7. see params h Note that the SEQ and LAG values may cause awkward interactions if the second feedback channel is being used see Section 8 3 Default 0 a b c d wey NS O x 0 RIGHTPITCH Output pitch value is same as the keystroke input pitch 1 SAMEPITCH Output pitch is fixed as FEED_NOTE regardless of input keystroke value 2 REVPITCH Reversed pitch low notes at right end of keyboard 3 LARGEPITCH A semi random but consistent i e each note is always mapped to the same pitch pitch mapping Each note will receive a pitch alteration in semitones according to the following list C 6 Db 2 D 3 Eb 0 E 15 F 6 Gb 0 G 1 Ab 5 A 1 Bb 2 B 0 See Finney 1997 for an example use of this 4 RANDPITCH Another semi random pitch mapping but one that is not consistent hitting the same key twice in succession will give different notes Each played note will receive a semitone alteration randomly selected from the range of a 5th below to a 5th above the input note NOTE if FEED_NOTE is set to a non zero value as is currently the default the output notes will range from a 5th below to a 5th above that note regardless of input keystroke Setting FEED_ NOTE to 0 will cause the output note to randomly vary centered on the keystroke note If this description makes no sense try it out 5 SEQPITCH A fixed pitch mapping Each succeeding keystroke regardless of key w
8. 4000 events 1 ms event though there is also some startup overhead If your Linux driver has the 10 ms polling problem mentioned in Section 9 3 1 the elapsed time will be closer to 40 seconds Most importantly just look at the data in the looptest sub block trial abs output file this will allow you to see the exact time course of the messages in the system 39 If this benchmark appears to show a problem and you wish to verify whether it is an FTAP problem or a MIDI interface problem the rawmidiloop program in the utils directory might be of some help this uses the same loop cable configuration but directly reads and writes the MIDI interface without involving FTAP This used to work but I don t know if it still does References Aschersleben G and Prinz W 1997 Delayed auditory feedback in synchronization Journal of Motor Behavior 29 35 46 Finney S A 1997 Auditory feedback and musical keyboard performance Music Perception 15 153 174 Finney S A 1999 Disruptive Effects of Delayed Auditory Feedback on Motor Sequencing PhD thesis Brown University Finney S A 2001a FTAP A Linux based program for tapping and music experiments Behavior Research Methods Instruments and Computers 33 63 72 Finney S A 2001b Real time data collection in Linux A case study Behavior Research Methods Instruments and Computers 33 167 173 Lutz M and Ascher D 1999 Learning Python O Rei
9. In addition it will be helpful if you have some knowledge of Linux UNIX and that you know what MIDI is as I cannot provide extensive background information in these areas If you think that FTAP might be useful to you but you know nothing about Linux you may need to seek outside assistance FTAP has been written for Linux because it s what I know how to program if you want to port it to a different OS you are free to do so under the confines of the GNU license Please contact me if you plan to do this FTAP is provided in source code form at no charge but without warranty under the GNU Public License agreement My understanding is that the GNU license allows you to use and modify the software in any way you like for personal use but that any further distribution of the modifed software must be done in source code form under the GNU license agreement My intent is that FTAP be available for unlimited use and modification you can download the FTAP distribution from http csml som ohio state edu ftap If you have comments bug reports bug fixes enhance ment requests or coded enhancements I would like to know so that I can deal with them and or choose to incorporate them into the standard version of FTAP Send comments and questions to sf csml som ohio state edu NOTE I am confident enough in this program that it has been my main system for data collection for the last 4 years or so I have tested it extensively and it is the subject
10. and 0 velocity running status is not used FTAP sends a MIDI ACTIVE SENSE message to the output port every 200 ms Most MIDI devices should have no problem with ACTIVE SENSE but if this is a problem you can try setting ACTIVE_SENSE_ON in metron c to 0 and recompiling FTAP This deals with a problem where some Linux MIDI drivers would send a MIDI ACTIVE SENSE message on device close this can trigger some tone generators e g a TX81Z to require an ACTIVE SENSE message every 300 ms to maintain a tone This interfered with FTAP s masking noise feature D 4 MIDI Output and Output Devices Much of FTAP s flexibility derives from appropriate programming of the output MIDI device i e tone generator All of FTAP s control is in terms of MIDI information For instance timbre differences e g having two different sounds in a structured metronome sequence are specified in FTAP by designating different MIDI channels for different events it is up to the experimenter 46 to set up the tone generator to respond in an appropriate way on the different MIDI channels Similarly relative loudness can be controlled by the use of MIDI velocity parameters but the actual loudness will depend on the programming of the tone generator and the voice used In setting up an experiment it is necessary and important for the experimenter to measure and calibrate the specific output devices In the simplest case any tone generator can be used with FTAP
11. and 2 18 MET_CHAN_ARRAY 2 1 2 5 MET_LEN_ARRAY This allows imposing a pattern of tone length on the metronome sequence The following would place a longer tone agogic accent every 3 beats in an isochronous se quence MET_LEN_ARRAY 3 150 80 80 6 MET_NOTE_ARRAY This allows imposing a pitch pattern on the metronome sequence The following line will repeat an ascending C major scale MET_NOTE_ARRAY 8 60 62 64 65 67 69 71 72 If a metronome array parameter is specified it will override the equivalent integer parameter If multiple metronome array parameters are used e g both velocity and length they would typically all be of the same length as in the following polyrhythm example but this is not required by FTAP see e g the metronpat3 file in the params demo directory 4 5 1 Polyrhythmic Pacing Example The following parameters would provide a 3 vs 4 polyrhthmic pacing signal with the 4 part of the signal distinguished by a higher pitch Unfortunately FTAP does not permit playing more than one pitch at the joint accent so this is played by a third pitch and stressed by length Although this example is a little complicated once it is set up it is possible to change the tempo simply by altering the MSPB parameter METRON_ON 1 MSPB 200 MET_VEL 90 MET_PATTERN_ARRAY 12 1 0 0 1 1 0 1 0 1 1 0 0 MET_NOTE_ARRAY 12 7900 0 84 72 0 84 0 72 84 0 0 MET_LEN_ARRAY 12 120 40 40 40 40 40 40 40 40 40 40 40
12. can run for evaluation purposes using the standard OSS Linux drivers i e sup port NON_BLOCK as well as select Also allow non realtime use if RTC is not configured currently it won t run at all 2 Add a feature so that a tone PULSE can be sounded on the basis of a trigger More generally allow calling any C function on the basis of a trigger 3 Test and expand MIDI capabilities test ALSA drivers test use of internal MIDI synth for output test MIDI on a serial port 4 Outboard the specifications of all pitch mappings to an external file B Distribution The distribution is a directory hierarchy distributed in gzipped tar format which contains the following directories B 1 bin The bin subdirectory contains a compiled version of FTAP for a Pentium based computer This has been compiled under the RedHat 6 1 or maybe 7 0 Linux distribution with the included GNU C compiler The bin directory also contains a few other potentially useful programs with sources in the utils directory 41 B 2 doc The doc subdirectory contains ATEX dvi ps and pdf versions of the User s Guide and this Ref erence Manual It also contains an scip summary text file which is the summary of a presentation I gave at the Society for Computers in Psychology conference in 2000 which describes aspects of the real time implementation of FTAP B 3 params The params subdirectory contains samp
13. extract all lines with K in column 8 and D in column 2 The data values in column 1 of the resulting file will be the keypress times 8 Troubleshooting This section contains some hints if you can t get FTAP to work Some things have certainly been overlooked in this Reference Manual notify me if you find such things and if you re motivated you can always look at the provided source code 8 1 FTAP isn t working at all If you can t get FTAP to do anything at all here are some suggestions 1 Make sure your Linux MIDI system is configured correctly for FTAP use FTAP does all MIDI I O using dev midi A simple setup involves a keyboard attached to MIDI In and a separate tone generator attached to MIDI Out the only sound output should be from the tone generator When you tap on the music keyboard when FTAP is not running you should hear no sound FTAP wants to control all auditory feedback However if you run the midicopy program in the bin directory of the distribution source is in the utils midicopy directory then your keyboard should create sounds through the tone generator If midicopy isn t working you 8Some MIDI sound cards e g the Roland MPU 401 default to echoing MIDI in back to MIDI out so this is not a definitive test 33 8 2 need to sort out your MIDI setup e g check the MIDI channel settings on the devices you re using If midicopy works
14. files making it possible to listen to the data files including things one didn t hear when running the experiment like the keystrokes themselves Various aspects of what you hear can be specified by command line arguments It currently requires that the input file have the abs suffix created by FTAP It defaults to playing keystrokes if nothing else is specified This code has not been kept up to date but should work The accuracy of the program argument descriptions needs to be verified USAGE there are a bunch of command line arguments which allow choosing exactly what to listen to It will not be possible to listen to junk events masking noise however you may want to listen to trigger events to know where things changed You may want to listen to keystroke events which on the original run did not in and of themselves make any noise This means that it may be necessary to allow specifying MIDI channel for keystokes since the input keystroke value may not be suitable for the tone generator playftap usage is as follows where all arguments except filename are optional This program currently only plays one file at a time playftap kmft R lt ratio gt T lt tchan gt U lt tnote gt C lt keystrokechan gt K lt keystrokeadd gt S lt startpoint gt filename The k m f and t turn on playback of keystrokes metronome feedback and trigger events respectively you can play these simultaneously in any comb
15. key release 3 Col 3 MIDI channel of the event 4 Col 4 MIDI Note number of the event 5 Col 5 Pitch name for the MIDI note number of column 4 e g C 4 for 61 is always used for accidentals 30 6 Col 6 MIDI velocity 0 for key release any velocity the input device may produce for NoteOff events is discarded 7 Col 7 Sequence number for input key presses as well as for corresponding feedback events 8 Col 8 Event type M F kK J Example a key press data line 9630 D 1 86 D5 74 12 K 7 4 MIDI Controller Data If column 8 is C or G columns 1 7 should be interpreted as follows understanding some of this requires knowledge of MIDI details 1 Col 1 Milliseconds since trial start 2 Col 2 X meaningless filler 3 Col 3 MIDI channel of the event 7 4 Col 4 First byte of MIDI controller data in decimal The interpretation depends on column 5 If column 5 is BO MIDI Control Change message then column 4 will indicate the specific controller e g 64 for a sustain pedal If column 5 is EO Pitch Bend then column 4 is the least significant byte of the pitch bend value 5 Col 5 The MIDI status byte nibble in hex of the input controller message AO for Poly phonic Key Pressure BO for MIDI Control Change EO for Pitch Wheel Change 6 Col 6 Second byte of MIDI controller data For Control Change messages this will be the value f
16. of the keyboard There are some limitations on the use of multiple feedback channels see Section 4 7 2 4 3 3 Masking Parameters FTAP provides the ability to output masking noise for the duration of a trial that is a MIDI note which stays on for the duration of a trial MASK_ON only takes effect at trial beginning and would typically be used with a tone generator that generates some approximation to white noise MIDI channel note and velocity can be specified Trigger events do not affect masking noise 1 MASK_ON Default 0 2 MASK_CHAN Default 2 3 MASK_NOTE Default 64 4 MASK VEL Default 35 15 4 3 4 Metronome Parameters FTAP s metronome provides a flexible form of pacing tone The integer parameters provide for an isochronous beat while array parameters see Section 4 5 can impose different types of structure on the tone sequence If an array parameter is specified it will override the corresponding integer parameter The actual characteristics of the sound will depend on the tone generator used all FTAP does is make sure that MIDI NoteOn and NoteOff messages go out at the right time The metronome parameters can be changed by triggers altering the metronome behavior on the fly A metronome trigger will affect the tone produced on the specified beat but not the MSPB preceding that beat One use for such triggers would be perturbing a stimulus sequence in a sychronization experiment 1 METRON_ON 1 if
17. on the binary and source but I don t think FTAP is going to get the wide use of a program like sendmail FTAP requires that the dev rtc real time clock be configured this may or may not be the default on your system it appears to be on RedHat but not on Mandrake see Section C This really should only be required if you re running as root but currently FTAP won t execute without it RTC is used perhaps counterintuitively to insert short pauses while FTAP is running To prevent FTAP from hogging system resources when run with root privileges FTAP contains a 49 ms delay every cycle this among other things allows for terminating FTAP with a keyboard interrupt DEL or ctrl C If run without root privileges FTAP will run perfectly adequately for test and development purposes and might even be adequate for collecting data run it both ways look at the output diagnostics described later and see for yourself Counterintuively on the basis of the output diagnostics FTAP may appear to run faster when run without root privileges as in this case there is no forced delay in each loop it s not necessary Crucially however running with root privileges avoids preemption that is the worst case performance is superior 9 2 General Concerns Because of the real time coding in FTAP system load is less of a problem than it might be in other cases but data collection should still be done on a system with no other users
18. p ra misisse a pelea Bl Po hh oe ie ae Rohe eee ee Se ho ee BASICA ran dike RA SOR oh ae Geek E Me OG oh aot BRISA GH ok A dk cae ee a A tected Linux OS Configuration Issues CL OS Versions vu 4 8 enue wea EA ES SRE ee A Ee ee aA G 2 Drivers ceed Be EA OL Oe ae A es C 3 Hardware and MIDI cards 200 0000 ee ee CA Compilation 2 4 ase arg ot ig tae eG aah oe Poe ry a ee ea Sete GE aa de MIDI Dsl MIDI Data Stre arn aia e Gee ee he gE DOR Ge ha AS he Redo Ate Re eS D 2 MIDI Input Devices a so secc due 20 i 20000000002 2 ee ee D 3 MID Output Streams ia 621 502 A ee PA a od D 4 MIDI Output and Output Devices 2 0 0 0 0 02020000 eee ee FTAP Design and Implementation Sample Experiment Driver in Python Interactive Mode User Enhancements Code Changes playftap usage 41 41 42 42 42 42 42 43 43 44 44 44 44 45 46 46 47 48 50 51 51 1 Introduction FTAP is a Linux program for running a variety of psychology experiments with verified millisecond resolution data collection It allows manipulation of auditory feedback in response to a user s key presses using MIDI devices for input and output You are currently reading the Reference Manual which assumes that you have read either the User s Guide or the article on FTAP in Behavior Research Methods Instruments and Computers Finney 2001a That is I will assume that you already understand the purpose and overall design of FTAP
19. program configuring the program this way requires superuser privileges Once this is done any user can run FTAP as a real time process The installftap script in the bin 35 directory shows how I do this but you and or your system administrator should understand exactly what this script does before trying to do this NOTE setuid root programs on a Linux machine are a potential source of breached security I don t think there are any major security issues with the FTAP program though I am not a security expert e g it is not possible to invoke a shell or execute another program from FTAP and although FTAP may gobble system resources while it s running it is explicitly designed to be interruptible from the keyboard If you re running on your personal machine and it is not subject to hacker attacks there should be no worries If you re in a potentially hostile environment check with your system administrator or technical support person This is one reason why FTAP is distributed in source code form setuid root privileges should only be given to a trusted program If you are going to run FTAP with root privileges then I recommend that you compile it from scratch just run the makeftap script in the src directory though see Section C 4 Anyone who installs an unknown binary with setuid root privileges is asking for trouble If I really wanted to be secure there should be some sort of security checksum
20. the metronome beat should be sounded 0 if not Default 0 2 MET_CHAN MIDI channel for the metronome Default 1 3 MET_NOTE MIDI note value for the metronome Default 64 4 MET_VEL MIDI velocity for the metronome Default 100 5 MET_LEN Length in milliseconds of the metronome beat Default 20 6 MSPB Length in milliseconds between beats Default 600 4 3 5 Miscellaneous Integer Parameters 1 CLICK1_OFFSET CLICK2_OFFSET if click files see below are being used this is the offset in milliseconds from trial start at which the click file will be played Up to 2 click files are available These offset parameters are useful in allowing a single set of pre programmed events to be used at different positions or phases There can be two click files and each one can be offset by a certain amount Default 0 2 STDOUT If set to 1 FTAP output will go to the video screen rather than to a text file Only keystrokes will be displayed This may be useful for long practice or test sessions where you don t need the data recorded as it keeps input data structures where the information is stored from overflowing FTAP normally does not write any data to disk while a trial is running it is kept in memory However since the internal data structues now hold about 7500 notes set to 15 000 in ftaplimits h where each note involves a NoteOn and a NoteOff it really isn t likely to be necessary No longer suppo
21. time This can be checked in the output file as the actual not intended time of the write call to dev midi is provided there 3 DISC_MAX Maximum value of such discrepancies 4 DISC_MAX_TIME The time since beginning of trial where this discrepancy occurred The offending event can then be looked up in the output file 5 INPUT_MAX in a multi byte MIDI message the maximum time between FTAP s accessing of the individual bytes 6 INPUT_MAX_TIME The time where INPUT_MAX occured MIDI Error Diagnostics On one system I would occasionally about 1 event out of 15 000 see what appeared to be hardware MIDI errors FTAP currently detects some obvious examples a MIDI Note Number of 0 or larger than 127 or a MIDI velocity greater than 127 and will print a MIDI WARNING diagnostic to the screen and will list information about the detected error for up to 10 errors in the output file with a parameter of MIDL ERROR If you understand the MIDI data stream how FTAP handles MIDI input and output and the details of the MIDI data that your keyboard puts out see Appendix D it is usually possible to reconstruct the correct data but it requires a bit of detective work It is too much detail to put here see also Section 7 6 7 2 Data Line Format Any line in the file not starting with the character or white space is an 8 column data line arranged in ascending order by time of occurrence indication of
22. 0 Yes FEED_PMODE 0 Yes FEED_NOTE 96 Yes FEED_DMODE 0 Yes FEED_DVAL 250 Yes FEED_VMODE 0 Yes FEED_VEL 0 Yes FEED2_0N 0 No FEED2_CHAN 1 No FEED2_LEN 20 No FEED2_PMODE 0 No FEED2_NOTE 80 No FEED2_DMODE 1 No FEED2_DVAL 250 No FEED2_VMODE 0 No FEED2_VEL 100 No SPLIT_POINT 64 No PITCHLAG 0 No MASK_ON 0 Yes MASK_CHAN 2 No MASK_NOTE 64 No MASK_VEL 35 No METRON_ON 0 Yes MET_CHAN 1 Yes MET_NOTE 64 Yes MET_VEL 100 Yes MET_LEN 20 Yes MSPB 600 Yes STDOUT 0 No CLICK1_OFFSET 0 No CLICK2_OFFSET 0 No FULL_PARAM_PRINT 0 Yes 4 2 2 String Parameters The following parameters take a character string as a value Although double quotes are used here for clarity these quotes should not be used in the input file 10 Name Default Value Default Print SUB sub Yes BLOCK block Yes TRIAL trial Yes COMMENT a No CLICK1_FILE ua No CLICK2_FILE ve No PITCHSEQ_FILE se No 4 2 3 Array Parameters The following parameters take an array of integers as a value The first field is the array length which is followed by the elements themselves The default for all of these is an empty list 0 elements Name Default Value Default Print RANDDELAY_ARRAY 0 No MET_PATTERN_ARRAY 0 No MET_VEL_ARRAY 0 No MET_NOTE_ARRAY 0 No MET_CHAN_ARRAY 0 No MET_LEN_ARRAY 0 No 4 2 4 Output only Values In addition to the parameters which control how FTAP behaves there are also certain diagnostic values that FTAP writes to the output file these are listed b
23. 00 7 250 5 300 350 400 5 450 500 550 source directory for parameter files param_path home sf texp10 params start_trial 1 trial_count 3 of trials in each condition trial_break 17 give a break after 17 trials create a list in which each suffix condition occurs 3 times suffixes trial_count suffixes trial_num start_trial Create override parameters for FTAP invocation Assumes that subject and block will not change within a single run sub_param SUB subject_id block_param BLOCK block_id 49 while suffixes if trial_num trial_break print nFIRST BREAK Hit lt CR gt to continue line sys stdin readline experimenter can type anything randomly choose a condition to run suffix whrandom choice suffixes suffixes remove suffix construct the command line to execute file param_path prefix suffix trial_param TRIAL trial_num exec_line ftap file gt sub_param o au trial_param au 3 block_param am print n nHit lt CR gt to start trial d file s trial_num file line sys stdin readline experimenter can type anything os system exec_line trial_num trial_num 1 G Interactive Mode Interactive mode is an self documenting that is largely undocumented mode of FTAP that you enter if you do not provide a parameter file name of the command line It i
24. FTAP A Linux based program for tapping and music experiments Reference Manual Version 2 1 05 2001 Steven A Finney November 1 2001 Contents 1 Introduction 5 2 Installation Initial Use and Evaluation 6 2 1 Distribution and Installation 2 0 0 0 0 e 6 2 2 Computer and Operating System ee 6 2 3 MIDI and Devices 2 2 24842544 204 be a eae ee ee ae aA 7 DAs Demos Piles x y teste od oe a TA ee ete A eae TE 7 2 0 Tb Does Work 22d aoe os Ske ws a PSE EY aR ee eo Bence Gh ar Fo 7 3 Usage 7 4 Parameters 9 41 TnputsFile Format vj ce ces Pe oe ga et oe ee a p o 9 4 2 Complete Parameter Listing 2 0 2 2 2 0 0 02 eee ee 9 4 2 1 Int ger Parameters oi 2 save ee ee A RG ea es 10 4 2 2 String Parameters 1 2 0 a 10 429 3 Array Parameters s e sis yw a a a lea Gs ae 11 AZA Output only Values so A A REE ee A 11 4 3 Integer Parameters 12 4 3 1 Feedback Parameters 0 a 12 4 3 2 Second Feedback Channel e 14 4 33 Masking Parameters aoaaa ee 15 4 3 4 Metronome Parameters 00 00 eee ee ee 16 4 3 5 Miscellaneous Integer Parameters e 16 4 4 Strine Parameters oi diret Van yan Pte ge A e ainia Re de a 17 A Array Parameters 2 ria it AR E e ar AGA Edo a ge ES 18 4 5 1 Polyrhythmic Pacing Example a 19 AO Trig ers ia te E he eter ein A nd 20 4 7 Parameter Subtleties and Complexities 0 20000002022 eee 20 AST
25. N FEED_PMODE FEED_DMODE FEED_DVAL 250 PRP OOrR FF METRON_ON 0 23 5 3 sample experiments aschersleben Synchronization task with an 800 ms isochronous pacing signal and 70 ms delayed auditory feedback to the subjects keystrokes The feedback tones are of fixed pitch volume and length regardless of the subject s keystrokes Ends after 36 pacing tones Similar to Aschersleben and Prinz 1997 Change FEED_DVAL to 0 30 or 50 for the other delay conditions in their experiment To cover up synchronous physical keystroke noise set MASK_ON to 1 this assumes you have an appropriate masking noise programmed on MIDI channel 2 To investigate effects of tempo on the amount of negative asynchrony tapping before the metronome pulse simply alter MSPB FEED_ON 1 FEED_CHAN 1 FEED_NOTE 90 FEED_VMODE 1 FEED_VEL 127 FEED_LEN 20 FEED_PMODE 1 FEED_DMODE 1 FEED_DVAL 70 MASK_ON 0 MASK_CHAN 2 MASK_NOTE 64 MASK_VEL 30 METRON_ON 1 MSPB 800 MET_CHAN 1 MET_NOTE 60 MET_VEL 127 MET_LEN 20 TRIGGER 3 M 37 END_EXP 0 24 5 4 sample experiments finn_99 275 Sample experiment from Finney 1999 This is a continuation paradigm with a 4 2 patterned pacing tone This trial gives auditory feedback to keystrokes with 275 milliseconds delay only during the continuation phase not while the pacing signal is on Typical subject response is to sometimes tap groups of 5 rather than 4
26. UT 20 trigger events in the output data file i e it plays no role in sequencing However a second trigger with the same ID will erase a previous one A warning message will be written if this occurs In FTAP version 2 1 03 there was a problem if a trigger which affected a feedback parameter occurred between a keystroke down and the corresponding key release e g if a change of FEED_ON from 1 to 0 occurred the NoteOff was not sent and the note would not terminate One suggested workaround was to used fixed length output FEED LEN 0 since in this case NoteOn and NoteOff messages are always scheduled together This has been fixed in 2 1 05 all relevant feedback parameter values are saved when a key is pressed and those values are used when that key is released even if the value has been changed in the meantime This has not been tested as thoroughly as I would like particularly with respect to multiple feedback channels but no one has reported any problems 4 7 2 Feedback Channels The second feedback channel was originally introduced into FTAP to handle experiments with both synchronous and delayed feedback in response to a single keystroke including the ability to flexibly manipulate volume levels for each of the two feedback output events It was then simple enough from an implementation perspective to extend this to allow two totally independent responses for a keystroke e g synchronous and pitch mapped feedback c
27. ally be invoked with 3 parameter overrides for subject SUB trial TRIAL and block BLOCK The parameter file name subject trial and block are all obligatorily encoded in the output file name FTAP will happily overwrite an existing output file without giving any warning An invocation of FTAP in an actual experiment might thus be the following the resulting output file would be named 250p_250 1 2 7 abs ftap 250p_250 SUB 1 BLOCK 2 TRIAL 7 A run of FTAP may be terminated by typing Ctrl C or the equivalent keyboard interrupt character on your system When FTAP starts it will print Running as normal user if you are running it without having done any special configuration Tf you have set it up for real data collection see Section 9 it will print Running with realtime privileges When FTAP terminates it will print out a timing diagnostic like the following Mean time between sched s ms 0 01 schedcnt 194077 gt ims 1 gt 5 ms O gt 10 ms O max 2 ms This output is significant if you are doing real time data collection and it will be explained further in Section 9 5 It provides information about FTAP s internal timing on this run In research use it may be best to run FTAP from a script that keeps track of trial numbers and parameter file locations and that takes care of trial randomization Appendix F contains an example of such a script in the Python language If FTAP is invoke
28. ameter is not specified by a user a default value documented in the following sections will be used this will usually lead to a rational level of inaction If a parameter is important to your experiment you should explicitly specify it rather than relying on the default Additional documentation on FTAP parameters may be found in the source files params c and params h A sample parameter file is provided in the User s Guide and additional examples are provided in the params directory of the distribution and in Section 5 of this Reference Manual Looking at and running and modifying these files is one of the best ways to see how FTAP works 4 2 Complete Parameter Listing This section lists all of the parameters specifiable in an input file including the default value if the user does not specify a value and whether the parameter value will be printed by default to the output file Parameters set by a user in a parameter file will always be listed in the output file and setting the FULL_PARAM PRINT parameter to 1 will cause all parameters can be printed to the output file Any parameters not listed in the output file can be assumed to be set to the default values listed below The function of each parameter is explained in subsequent sections 4 2 1 Integer Parameters The following parameters take a single non negative integer as a value Name Default Value Default Print FEED_ON 1 Yes FEED_CHAN 1 Yes FEED_LEN
29. and NoteOff are separate events This limit approximately 7500 notes might be reached in a long musical performance It s possible that on a machine with a decent amount of memory this could be increased to a much larger value without consequence it is also possible that this default might be too large for some configurations 2 MAX_TRIG_EVENTS 60 Maximum number of trigger events Should be enough for most conceivable purposes SA possible solution would be to add a new parameter to allow a user to specify a default larger allocation that is dynamically allocated by FTAP and locked in memory before the trial timer starts 26 3 MAXPATTERN 20 Maximum length of metronome pattern Should be enough for most purposes 4 MAXRDELAYS 10 Maximum number of random delays Should be enough for most conceivable purposes There is also a limit on the number of active events that is events in the scheduling queue which is MAX_TE_EVENTS currently set at 2000 This is unlikely to be a problem for FTAP itself but is a problem for the playftap program which plays FTAP output files see Appendix I playftap is compiled with a larger limit for this value 7 Output File Format The output file name is hardwired to the format lt paramfilename gt lt sub gt lt block gt lt trial gt abs where sub block and trial are specified as parameters the SUB BLOCK and TRIAL parameters default to the str
30. chronous with keystrokes b 1 FIXED DELAY Fixed delay all keystrokes delayed by FEED_DVAL milliseconds c 2 RAND_DELAY Randomly for each keystroke select a delay from RANDDELAYS_ARRAY see Section 4 5 d 3 UNIFORM_DELAY The delay for each keystroke is chosen from a uniform distri bution between 100 and 300 ms 7 FEED_DVAL The amount of delay in milliseconds if FEED DMODE 1 Default 250 8 PITCHLAG If FEED_PMODE is 7 PITCHLAG specifies the number of notes back from which the pitch value will be taken Default 0 9 FEED_VMODE When set to 0 the velocity value for feedback messages will be the same as the input keystroke When set to 1 the velocity on output will be fixed and specified by FEED_VAL There are also some preliminary velocity mappings a value of 2 REV_VEL will cause harder keystrokes to give a softer sound while a value of 3 RAND_VEL will give randomized loudness to each keystroke Default 0 10 FEED_VEL If FEED VMODE is set to 1 this specifies the fixed MIDI velocity value to use for feedback Default 0 4 3 2 Second Feedback Channel A second feedback channel is provided which can either provide a second feedback tone for a given keystroke e g one synchronous tone and one delayed tone or can provide different feedback 3The choice of the term channel is perhaps unfortunate as this is totally independent of MIDI channel 14 responses in different parts of th
31. cise timing for important data collection on your system until you have run these tests I recommend using a separate keyboard and tone generator with the sound amplication equip ment and headphones only plugged into the tone generator I have not tried using an internal computer sound card as the tone generator it may or may not work FTAP needs full control over feedback generation so the keyboard should not directly control the tone generator On some keyboards it is possible to disable direct communication between the keyboard proper and the key board s tone generator and treat the tone generator as logically separate from the keyboard e g by turning off MIDI LOCAL mode so you can try this if you know your equipment 9 3 1 Car d s and Drivers Of the limited hardware I ve tested my best results were with a standard old fashioned Creative SoundBlaster 16 card a genuine one not a clone A Roland MPU 401 card using the UART mode which allows direct access to the MIDI data stream does not appear to handle the high throughput which I use as a benchmark test and I never got an ES 1371 to work correctly though I m told that it should Since all I O is at a very low level raw byte reads and writes on dev midi it should also be possible to use a MIDI interface based on a serial or parallel port The standard OSS Free drivers supplied in Linux at least the RedHat versions I ve worked with and probably the other
32. d please contact me 42 C 1 OS Versions FTAP has been run with various RedHat releases including 2 0 and 2 2 kernels It has also been run with Mandrake 8 0 using a 2 4 kernel RedHat appears to configure the real time clock by default dev rtc and supporting kernel module code Mandrake appears not to insmod rte on Mandrake should be sufficient for installing RTC Although the real time clock is needed by FTAP when run for real time data collection see Finney 2001b in an ideal world it wouldn t be necessary for evaluation use However currently FTAP won t run without it This may change in the future C 2 Drivers As noted elsewhere FTAP usage currently requires the 4Front MIDI driver to run http www 4front tech com the ALSA drivers might work but I haven t tried them Here are the gory details FTAP is implemented as a single process and it must be able to check MIDI input without blocking this was a somewhat arbitrary implementation decision an alternate approach would be to have a separate in put thread and output thread My initial Linux port used the stock OSS Free drivers supplied with RedHat and a basic SB 16 card and did non blocking reads using the O NONBLOCK O_NDELAY flag However the loop test and follow up investigation showed that output occurred with a 10 ms poll based on jiffies and the HZ variable which was not sufficient for my desired real time millisecond resolutio
33. d with no arguments it will enter an interactive mode which allows running parameter files changing parameters etc This mode was once useful for investigating FTAP but is no longer supported If you insist see Appendix G 2Overrides could also be used for using a single parameter file for a range of experiments in which only one value is changed e g delay time but it s really just as easy and probably safer to make separate parameter files for each condition 4 Parameters An FTAP trial is specified by a text file which lists parameters describing the experiment A pa rameter is a user settable value that controls some aspect of FTAP s behavior Parameters are of three types depending on the data value integer string or array of integers In addition triggers which changes the value of an integer parameter value during the course of a trial are also specified in the input file The important parameter values for an experiment are listed in the output file see Section 7 4 1 Input File Format The input parameter file is a simple text file containing parameter specifications Any lines beginning with the comment character or with a white space character will be ignored The format for a parameter specification is lt parameter name gt lt value gt This is also the format of override parameters which are the easiest way to specify subject trial and block see Section 3 If the value for a par
34. e 4Front driver It would be interesting to see whether the problem occurs with the ALSA drivers which supposedly do not use a busy loop 6 Forcing the file name to be in a particular format with a abs suffix is somewhat ugly inflexible and un Linux like 9 Installation Millisecond resolution Data Collection FTAP can do data collection with reliable millisecond resolution see Finney 2001b which is rec ommended required reading but there are a number of configuration issues involved in doing this Such real time use makes use of facilities requiring root privileges In addition not all MIDI card Linux driver combinations are able to meet this criterion FTAP should work fine when run as a normal user but if you re doing serious data collection there are some additional concerns 9 1 Root Privileges When FTAP is being used for real time data collection it will use the sched_setscheduler and mlockall system calls as well as the dev rtc real time clock all of which require root privileges If root privileges are not available FTAP should run just fine except for some small timing inaccuracies However real time clock support must still be enabled for now FTAP will print out either Running with superuser privileges or Running as normal user depending upon which is the case The recommended installation for running ftap for real time data collection is to configure it as a setuid root
35. e g something which simply generates a sine wave for MIDI channel one However a polytimbral tone generator combined with FTAP s ability to specify MIDI channels allows the use of separate sounds for pacing and feedback as well as the use of masking noise 1 have used a Yamaha TX 81Z available used for about 125 Since output is simply sent to the dev midi device it is possible that an internal computer tone generator set to respond to writes to this device would work this has not been tested E FTAP Design and Implementation This section contains some discussion of the implementation of FTAP enough hopefully to explain the diagnostics and benchmarking See also Finney 2001b and the scip summary text file in the doc directory for further discussion of real time implementation these will hopefully convince the reader that FTAP runs with millisecond precision If you re really interested in the implementation the source itself is liberally commented perhaps excessively so I haven t always had time to clean up out of date comments Timing in FTAP time stamping of input events and scheduing of output events is done at the millisecond level using the Linux gettimeofday system call which actually provides microsecond level precision If FTAP is running with root privileges sched_setscheduler and mlockall are used to get real time priority Because output may be asynchronous with input e g when delay is us
36. e keyboard such a keyboard split might be interesting for two finger polyrhythmic tapping experiments Examples are in the params demo directory the twochan and splitchan files The parameter names for the second feedback channel begin with FEED2 they behave exactly like the FEED equivalents but have different default values see Section 4 2 The defaults specify a fixed length pitch and velocity tone which is delayed by 250 ms but the FEED2_ON parameter defaults to 0 no sound Use of the FEED2 channel to provide a second feedback tone to a keystroke is simple just set the FEED2 parameters to the feedback response you want and set both FEED_ON and FEED2_ON to 1 To provide different responses in different parts of the keyboard it is necessary to use the SPLIT_POINT parameter and specific settings for the FEED ON parameters SPLIT_POINT de fines the splitting point on the keyboard e g 60 for C4 If FEED_ON is set to 2 the response for the main feedback channel will occur for keystrokes with note values greater than or equal to the split point while if FEED_ON is set to 3 the feedback response will occur for keystrokes below the split point FEED2_ON is set in the same way So e g set SPLIT_POINT to 60 FEED_ON to 2 and FEED2_ON to 3 so that the FEED_ parameters define the feedback response for keystrokes on the right side of the keyboard and the FEED2_ parameters define the response on the left side
37. e must be specified as F eedback or M etronome other event types including K will be ignored and will cause an error message Click events will be written to the output file the F or M specification will be preserved The easiest way to generate such files may be to either record a performance using FTAP or generate an output file using the FTAP metronome Offsets may be specified by the CLICKN_OFFSET parameters The file names are interpreted relative to the directory containing the parameter file See params sample_experiments finn_99 fixed for an example Note that this is a fairly simplistic playing mechanism that is not really designed for presenta tion of complex musical stimuli Default 6 PITCHSEQ FILE if FEED PMODE is set to 5 then this file contains a list of integers 1 per line specifying the sequence of notes to be played in response to successive keystrokes The 17 sequence will repeat when the end is reached See params demo bachpitch for an example 149 The file name is interpreted relative to the directory containing the parameter file Default 4 5 Array Parameters Array parameters are used when there is a list of integer values The format for an array parameter involves first specifying the number of elements count and then the elements themselves The number of elements must be at least as large as count and only the first coun
38. e new feedback mode in in params h 2 Create a new mapping routine modeled on the existing functions in map c 3 Add a case statement in the appropriate map c routine pitchmap or delaymap calling your new mapping routine If you choose to make such a change choose a PMODE or DMODE coding greater than 50 to avoid conflict with future versions of FTAP If you create a change you think might be generally useful let me know so I can consider including it in the distributed FTAP version For pitch mappings the logical thing would be able to read mappings in from a file similar to the current SEQFILE stuff so that no C coding and recompilation was required This is not in the current version of FTAP and will require thinking about file formats for octave and whole keyboard mappings I playftap usage playftap is a utility included in the FTAP distribution see the utils and bin directories for playing FTAP output files that is hearing them as auditory MIDI output I have found this useful for getting an intuitive sense of what went on in a trial it is also good for creating audio examples for presentations playftap currently works on my system but I make no guarantees for you The following is the documentation in the code header as of 9 4 00 there are a number of options to choose exactly what will be sounded ol playftap c This is a playback program for FTAP output
39. ed FTAP uses an output scheduling queue that contains an ordered list of scheduled output events be they metronome or feedback events along with the time in which the event should be written out to the MIDI port This queue is normally checked at least once a millisecond and any events scheduled at or before the current time are then written out Since it is theoretically possible for the output queue scheduler to get delayed the actual and the expected time are checked each time an event is written out if the current time is different from the expected time this discrepancy is recorded When the program is completed the maximum such discrepancy as well as the mean is written both to the screen and to the output file If this number is larger than 2 milliseconds or so you should probably be concerned AT Similarly MIDI input should be read from the input port at least once a millisecond Time stamping of a MIDI message is determined by the arrival of the first byte If there is to be feedback in response to the keystroke it is written to the output scheduling queue delayed if necessary The initial versions of FTAP on SGI Irix enforced such millisecond scheduling by using a 1 ms granularity asynchronous interrupt but this is not provided on all systems The current implementation relies on fast CPU speed and high priority scheduling and simply does a loop until end of experiment of ReadMidiEvent ProcOutput Althou
40. elow These cannot be specified by the user The diagnostic timing values are described in Section 7 1 Name Default Value Default Print TIME Yes VERSION_NUMBER Yes PARAMETER_FILE 72a Yes AV_DELAY 20 gt No SCHED_AV as Yes SCHED_MAX Yes SCHED_MAXTIME Yes SCHED_GT1 Yes SCHED_GT5 Yes SCHED_GT10 gt Yes IN_DISC_MAX No IN_DISC_MAX_TIME az No DUT_DISC_AV a No 11 OUT_DISC_MAX gt No OUT_DISC_MAX_TIME gt No MIDI_ERROR gt Yes 4 3 Integer Parameters Integer parameters take a single non negative integer as value In some cases this will be the values 0 and 1 for off and on respectively For the feedback parameters FEED_CHAN FEED VEL FEED _PMODE FEED_DMODE and FEED_VMODE a value of 0 means that the input keystroke values will be echoed in the output while a non zero value means that there will be some alteration Integer parameters only are the ones which can be changed during the course of an experiment by trigger events 4 3 1 Feedback Parameters These parameters specify characteristics for feedback to a subject s keystrokes A second feedback channel is handled by FEED2 equivalents to the FEED parameters documented here see the dis cussion in Section 4 7 2 Most experiments will not require the second feedback channel Certain parameters are dependent on other parameters For example if FEED_ON is set to zero none of the other feedback parameters will have an effect
41. ength and are not handled ACTIVE SENSE and MIDI CLOCK messages can occur in the middle of other messages but FTAP just ignores them I hope linux_midi c should probably be rewritten from scratch but it does work 45 4 DX7 II This worked with older versions of FTAP I haven t tested it recently The only likely problem would be whether Channel Pressure Messages get ignored properly if this doesn t work the DX7 may allow disabling transmission of Aftertouch MIDI Local Mode can be disabled 5 Yamaha Portasound 500M puts out Timing Clock messages but FTAP now ignores them 6 Yamaha WX5 Wind controller Both breath control and pitch bend are recorded Unuseable input devices 1 Juno 106 puts out System Exclusive messages at least with our setup FTAP cannot deal with these From the point of view of tapping experiments the length of key movement for a MIDI keyboard compared to say touching a metal plate may be a problem Note also that input MIDI velocities across different keyboards are not directly comparable in terms of physical velocity Since all that FTAP requires is that input be in MIDI format a device other than a keyboard could also be used e g a drum pad a wind controller or a custom device of some sort e g an ICUBE system If a keyboard allows disabling MIDI LOCAL mode FTAP can use it for both input and output D 3 MIDI Output Stream FTAP s output encodes Note Off messages with 0x80 status
42. experiment isn t working correctly check this The first trigger specification below will turn the metronome off on the 10th beat the second will cause the 6th and all following keystrokes to sound with a delay of 300 ms assuming FEED DMODE is set to 1 and the third specification will end the experiment after 15 seconds Both keystroke and metronome triggers affect the triggering event itself however for the metronome the preceding MSPB has already been processed so a metronome trigger that changes MSPB will affect the following metronome pulse TRIGGER 1 M 10 METRON_ON O TRIGGER 7 K 6 FEED_DVAL 300 TRIGGER 3 T 15000 END_EXP 1 Metronome triggers are counted based on the underlying beat whether it is sounded or not with the first such logical beat starting MSPB milliseconds after trial start and a logical beat every MSPB milliseconds later Metronome triggers are counted on this logical beat basis regardless of the value of METRON_ON or MET _PATTERN_LEN 4 7 Parameter Subtleties and Complexities This section discusses some fine points of FTAP parameter usage 4 7 1 Triggers A somewhat minor feature of triggers may cause problems for a careless user such as me The trigger ID the second field in the specification currently serves no purpose other than marking gt There are a few special case instances where this will not work e g integer parameters which only have an effect at trial start such as MASK_ON and STDO
43. gh this is not provably guaranteed to give millisecond granularity it does so in practice If there are problems they will show up in the output diagnostics printed to the screen at the end of a trial and also printed to the output file Since the high priority scheduling of such a continuous loop e g when run as root with SCHED_FIFO priority can totally monopolize the machine to the point of not allowing FTAP to be interrupted by a keyboard interrupt and requiring a system reset a 49 ms pause implemented with dev rtc is inserted on each loop so that the mean time between scheduler calls will tend to be 49 ms If FTAP is run as a normal user this pause does not occur so that the time between scheduler calls may in fact be much less e g 01 ms F Sample Experiment Driver in Python FTAP runs a single trial potentially long and complex but an experiment typically contains multi ple trials often randomized blocked or counterbalanced FTAP in such a research situation would typically be run from a script of some sort which handles these higher level aspects A shell script could be used I use the interpretive language Python which is installed by default on some Linux installations e g RedHat or can be downloaded from www python org Python as a genuine programming language is more powerful elegant and general than shell scripts and I am told by those who know that it is more flexible and comprehensible than scr
44. his string An example is the following where the first field is the time of the detected error and the other fields are bytes of the MIDI data stream these are not necessarily the precise raw bytes e g the input routine has already interpolated MIDI running status The velocity of 255 is bogus MIDI_ERROR 54675 0x80 19 255 32 If you are getting MIDI errors there s not much I can say I was usually able to recover by hand what the original data should have been but this requires a certain amount of detective work and reasonable knowledge of the MIDI data stream and aspects of your keyboard it is particularly difficult because FTAP does not retain an exact copy of the input stream It should also be noted that only certain obvious MIDI errors are detected although this accounts for about 3 4 of the situations 1 had problems with Some useful information is in Appendix D 7 7 Data Filtering And Transformations The potentially extensive data in the output file can be filtered for analysis as necessary though I recommend keeping the original abs files around as a complete raw data record It s simple to filter these events using something like the dm program of Gary Perlman s Stat www acm org perl man statinfo html or a shell script or a Python or Perl program For instance if the only data of interest are the keystroke down times remove any lines with the comment character in column 1 and then
45. ill play the next note from a fixed sequence specified by the user in a pitch sequence file see the SEQPITCH FILE string parameter Great for non musicians as they can play a melody correctly no matter what keys they hit see the bachpitch file in the params demo directory 7 LAGPITCH Play the pitch from PITCHLAG notes preceding the current note but with velocity and timing values taken from the current keystroke At the beginning of a trial when there are no preceding notes to use the FEED_NOTE value is used If silence or the actual keystroke values would be preferable in this case just use keystroke triggers 13 and the FEED_ON or FEED PMODE parameter appropriately See Pfordresher 2001 and other work by P Pfordresher and C Palmer for use of this mode 5 FEED_NOTE If FEED_PMODE is set to 1 fixed pitch value in response to any keystroke this value specifies what note to use for feedback from 1 128 FEED_NOTE also affects behavior if FEED_PMODE is set to 4 randomized pitch see above Default 96 6 FEED_DMODE Delay mapping types These must be specified as integers in the parameter file but are provided here along with their internal designation see params h for conve nience When a note is delayed the duration of the note is unaffected i e both the NoteOn and the NoteOff events for a note will be delayed by the same amount Default 0 a 0 SYNC_DELAY No delay feedback is syn
46. ination Since trigger events in the file don t have a MIDI channel or note the T and U arguments allow overriding the built in defaults of 1 and 120 for channel and note respectively The sounding time of 75 ms and velocity of 100 for trigger playback are hardwired Since keyboard midi channel input doesn t necessarily correspond to a reasonable sound C allows overriding the MIDI channel in the input file perhaps a note should be added at least for tapping vs musical experiments The K flag provides a value you can add to keystroke velocity values to make them louder its use automatically turns on keystroke audio ouptut The S flag allows for a millisecond time from file start for when playback of the file should begin The R flag allows for altering the rate of playback slowing down is sometimes useful 2 0 will play at half speed 5 will play at double speed 52 53
47. inations which are covered in later sections e g Section 9 and Appendix D If you re lucky you won t need those details yet 2 4 Demo Files The params subdirectory contains a number of sample parameter files you should just try executing some of the ones in demo and sample_experiments For instance in the params demo directory the following command should sound a patterned sequence ftap metronpat3 2 5 It Doesn t Work If you have followed the above directions and are the sort of person who always buys winning lottery tickets then FTAP should be working beautifully If that is not the case look at later sections of this manual e g Sections 8 and Appendix D and try to figure out what s going on If you can t figure it out after making a good faith effort send me email 3 Usage FTAP is invoked as follows ftap lt paramfile gt param_override The optional parameter override s allows for parameter specifications which take precedence over parameter specifications in the input file The most common use of overrides is for specifying things like subject ID or trial sequence number which are really not part of the experiment description per se and thus don t belong in the parameter file A parameter override must be in double quotes so that the Linux shell passes it to FTAP as a single argument e g SUB 1 or NRDELAYS 4 10 20 30 2000 In actual data collection use FTAP would norm
48. ings sub block and trial if not explicitly specified The suffix abs is around for historical reasons it represents the fact that time values in the output file are absolute rather than relative to the preceding event Since the primary use of the output is for data analysis the output is in a columnar ASCII format rather than say a MIDI file though the latter could be created from FTAP s output with some loss of information The output file not only provides a full listing of all input and output events but also provides information about the active FTAP parameters the functioning of FTAP and timing diagnostics My approach has been that the output files should be self explanatory thus all characteristics of the trial the parameters plus diagnostic information and date should be included Unnecessary information can be removed using for example PERL Python or STAT but unrecorded information can never be recovered too much information is better than too little However this philosophy has been compromised a bit because the header was getting long and unwieldy The current approach is that all parameters explicitly specified by the user are printed as well as a subset of others that I consider to be crucial see annotations in Section 4 2 To print out all parameters recommended e g if you don t understand why FTAP is behaving a certain way set the FULL_PRINT PARAM parameter to 1 This
49. ipting languages like Perl I like it a lot See Lutz and Ascher 1999 for an introduction An example script in the Python language that I have used for running experiments is the following For this experiment there are 11 delay conditions each run at each of two rates 250 ms or 400 ms the parameter files names are constructed from a rate prefix and a delay suffix A sample parameter file name would be 250p_100 for 100 ms of delay at the 250 ms tapping rate Trials are blocked by rate and the Python program handles the subject block and trial override parameters The program prompts for a parameter file prefix encoding the rate subject number block number 48 whether this rate is being run as the first or second block and runs 3 trials of each condition in a random order A break is given after 17 trials All the experimenter has to do is hit lt CR gt when prompted to do so usr bin env python Sample driver file in Python for an FTAP experiment import os whrandom sys string print nEnter parameter file prefix line sys stdin readline prefix string split line 0 print nEnter subject ID line sys stdin readline subject_id string split line 0 print nEnter block number line sys stdin readline block_id string split line 0 List of all the conditions for this experiment these are the parameter files suffixes suffixes _s 100 150 2
50. kely to work but you really should verify MIDI throughput using the tests described earlier Section 9 6 C 4 Compilation FTAP compiles fine under various RedHat releases not surprising since it s what I use It does not compile on the Mandrake 8 0 release This appears to be due to some small discrepancies involving include files This could probably be fixed easily I haven t done so yet D MIDI FTAP does its own parsing of MIDI input and thus has to be prepared for whatever a keyboard generates and this differs across keyboards MIDI allows a number of options If you re having problems some of this information may be useful to you This section will also attempt to document just how FTAP manipulates MIDI input and output This section will not be a MIDI tutorial see http www borg com jglatt tech midispec htm for an excellent technical overview of MIDI D 1 MIDI Data Stream The basic data processed by FTAP are key press release events but there are a number of variants in how these may be encoded In addition keyboards may output a number of other types of MIDI events MIDI Status bytes are unambiguously differentiated from data bytes by having their high bit set Key press NoteOn events are indicated by a 0x90 MIDI status There are two allowable ways of signalling a NoteOff key release event either a MIDI NoteOff event 0x80 MIDI status possibly with a non zero velocity value or a MIDI NoteOn event 0
51. le parameter files that you can run Each has a comment explaining its purpose There are 3 subdirectories 1 demo parameter files demonstrating many of FTAP s capabilities 2 sample_experiments parameter files providing approximate replications of a number of stud les in the tapping literature 3 benchmark parameter files for testing FTAP s performance see Section 9 6 B 4 src The src subdirectory contains the C source code for FTAP itself Currently there is not a makefile but rather a makeftap shell script which compiles the source Eventually the included system h files from my Linux distribution should also go here so that you can see what differences there are in case you have trouble compiling B 5 utils The utils subdirectory contains the source for a few C utility programs as well as a copy of the Python script in Section F These programs have not been tested recently but should still work playftap is a useful utility for playing FTAP output files see Section I for details midicopy is a simple but useful diagnostic test program mentioned in Section 9 6 rawmidiloop is a less useful and perhaps non functionaing diagnostic program gettod_test contains a version of the Linux gettimeofday tests reported in Finney 2001 C Linux OS Configuration Issues This section contains some minimal notes about Linux OS configuration If you have any more information to ad
52. lly Sebastopol Pfordresher P Q 2001 Auditory Feedback in Music Performance Serial Order and Relative Timing PhD thesis Ohio State University A Revision History 1 2 1 00 Initial Linux version 2 2 1 01 Better though still imperfect handling of MIDI input errors WARNING messages printed to screen and MIDI_ERROR diagnostics to file in case of unrecognized or incorrect MIDI bytes Also print out the output file name when FTAP is run 3 2 1 02 Internal use only 4 2 1 03 The first public release Changed MIDI parsing code to ignore all MIDI System Real Time Messages in particular the Timing Clock message put out by some Yamaha PortaSound 40 keyboards Improved and simplified midicopy utility Included the getttimeofday bench marks from Finney in press in the distribution utils gettod test Major revisions to this Reference Manual 5 2 1 04 Internal use only 6 2 1 05 1 major bug fix triggers that change a feedback response parameter between key press and key release now work correctly fixing a bug where a note might not be terminated this was documented in Section 4 7 1 of the 2 1 03 Reference Manual The fix involves saving all parameters on key press and using those values on key release Also fixed a minor bug involving MIDI controllers Minor revision to User s Guide significant revision to this reference manual Future revisions wish list 1 Fix it so FTAP
53. logged in they probably wouldn t be happy with system performance anyway and with no heavy networking activity e g not acting as a server I have found some FTAP performance degradation when X Windows is 36 running and I suggest running from a console screen but I don t bother taking the system down to single user mode Check the diagnostics and see what works for you 9 3 Hardware and Linux Configuration Issues This section is not totally up to date and it partially duplicates information in Section C but Pm not bothering to fix it just now Read that section as well FTAP has been successfully run on Pentium based hardware 200 MHz running Redhat Linux 5 2 6 1 and 6 2 Linux 2 0 and 2 2 kernels with a Creative SoundBlaster 16 MIDI card FTAP does not depend on any particular card but there are cards that don t work see the following section I use the 4Front MIDI driver http www 4front tech com rather than the standard Linux drivers because they have better time resolution for MIDI output see discussion in Section 9 3 1 and in fact the standard drivers currently will not work with FTAP see Section C This section used to say I suggest you just experiment around with FTAP on whatever driver setup you have until you decide that FTAP will be useful for you at that point run the benchmarks in Section 9 6 and consider changing to the 4Front or ALSA drivers if there s a timing problem Do not rely on pre
54. lthough it ignores irrelevant ones but often when I try new keyboards I find something new that FTAP can t handle FTAP does not have a smart MIDI parser and it is not clever about dealing with and recovering from input errors See Appendix D for some discussion of MIDI MIDI controller input is subject to the FEED ON FEED DMODE and FEED CHAN ma nipulations before output but it is not subject to other manipulations File names used for input sequence and click files are always interpreted relative to the directory the parameter file is contained in 34 4 For some most tone generators having multiple simultanous events of the same pitch may cause some notes to get cut off this might occur if doing something like using a SAMEPITCH pitch mapping in which all keystrokes get feedback with the same pitch in an experiment in which subjects are using multiple fingers If this is a problem experiment with different tone generators and programming play around with scale tuning to set all notes to the same pitch if you can do that on your tone generator etc 5 Tf click files are being used to play output during an experiment and if there are multiple 3 or more precisely simultaneous output events the timing diagnostics may consistently show some inter scheduler times of 2 or 3 milliseconds Although I have not isolated the exact source of this my guess is that it is due to the use of a kernel busy loop within th
55. n performance it is possible that other interrupt driven MIDI cards would give adequate performance with the OSS Free drivers I then tried the commercial 4Front driver available only as a binary Unfortunately at the time this may have changed the 4Front MIDI driver did not support NONBLOCK mode but it did support the select system call which can accomplish the same thing I recoded FTAP to use select and the tested performance showed satisfactory millisecond resolution on output Much to my chagrin I didn t realize until much later that FTAP no longer worked with the standard Linux OSS drivers even for evaluation purposes This is probably because that driver doesn t support select though I haven t chased this down for sure In fact both select and NONBLOCK really should in my opinion be supported on any MIDI driver Hopefully ALSA does this and 4Front may be incorporating NONBLOCK in a future release I suspect the stock Linux drivers will not be fixed In the meantime FTAP has not been recoded so that it works with either select or NONBLOCK 43 C 3 Hardware and MIDI cards FTAP should run on any reasonable Intel based Linux machine let me know if you try it on another architecture such as Alpha or PowerPC The two MIDI cards that have been successfully tried are a Creative SB 16 old and simple and a more recent Soundblaster Live Value Digital card In fact most any card except for a Roland MPU 401 is li
56. ntium boxes 200 MHz and up running RedHat distributions 5 2 6 1 6 2 and 7 0 2 0 and 2 2 Linux kernels FTAP has also been run but not successfully compiled on a Mandrake 8 0 distribution with a 2 4 kernel The provided binary should work on most Intel based Linux systems It might even work if recompiled on a totally different architecture let me know what happens if you try this See Appendix C for additional information 2 3 MIDI and Devices FTAP uses MIDI for both data collection and auditory stimulus presentation so you need a MIDI hardware interface of some kind with both an input and output port and an installed Linux driver for that interface in fact currently the commercial MIDI driver from 4Front technologies http www 4front tech com appears to be required see Section C 2 FTAP accesses the raw MIDI stream using the device dev midi Next you will need a MIDI keyboard for input and a MIDI tone generator for output To run the demonstration files you should set both of the devices to transmit respond on MIDI channel 1 If you have a keyboard which allows you to turn off MIDI LOCAL mode you can use that keyboard for both input and output if you disable LOCAL mode If you have no external tone generator but have a MIDI sound card I have no idea what will happen Let me know There are a number of details regarding the MIDI output generated by different keyboards and the behavior of different card driver comb
57. of various talks and writeups for publication However as of this writing it has received serious use from only a few other people so it should perhaps best be viewed as a beta version If you think it might be useful try it out and FTAP began as a program I wrote for an SGI Indigo which I used for my research as a graduate student at Brown University I thank Jim Anderson David Ascher Peter Eimas Mike Tarr and Bill Warren for their assistance during this time The port to Linux and many important enhancements were completed during a post doctoral fellowship at OSU I thank Caroline Palmer Pete Pfordresher and Shane Ruland for their assistance I d also like to thank David Huron and Doug Reeder for providing a web home for FTAP at http csml som oho state edu ftap In addition some other people have actually started using FTAP Thanks to Grant Baldwin Zeb Highben and Anna Lisa Ventola of Caroline Palmer s lab and special thanks to Saul Sternberg for helpful comments and for being the first brave soul to install and use FTAP on his own Steve should be reachable at either sf sfinney com or sf csml som ohio state edu let me know what you think Although the documentation this Reference Manual and the User s Guide should be both accurate and complete the organization and writing still need a fair amount of work Preparation for public distribution e g adequate documentation has been a large task and often has to take
58. ombined with delayed and isotonal feedback and then a further simple step to allow applying one or the other of those two feedback responses to different parts of a logically split keyboard allowing different responses to different fingers or hands e g one delay value above middle C a different one below middle C The resulting parameters are fairly simple but the additions are not always fully integrated and contain some pitfalls if not used carefully Note that feedback channel here should not be confused with MIDI channel which is completely separate in addition a feedback channel may be polyphonic In addition keyboard splitting relates to but is also somewhat distinct from the use of multiple feedback channels The particular issue is that a number of variables in the system are not factored out into the two channel scheme because it hasn t been worth the extra complexity For example there is only one RANDDELAY ARRAY variable so it is not currently possible to have independent random delays on the two channels Also MIDI controller input e g pedals pitch bend will always be delayed based on the FEED DMODE parameter The following facilities will work fine if only one feedback channel is configured for the given ca pability you can still use the second channel it just must be programmed with a different mapping 21 but will probably give weird results if applied to both feedback channels at the same time
59. or the specified controller For Pitch Bend it will be the most significant byte of the pitchbend value 7 Col 7 0 filler 8 Column 8 Event type C for an input event G for an output event Example A sustain pedal being pressed and released might be recorded as follows 8000 X 1 64 BO 127 0 C 9000 X 1 64 BO 0 0 C 31 7 5 Trigger Events If column 8 is I columns 1 7 should be interpreted as follows 1 Col 1 Milliseconds since trial start 2 Col 2 Trigger subtype M etronome T rigger K eystroke 3 Col 3 0 filler 4 Col 4 Trigger ID second field of the TRIGGER parameter line 5 Col 5 filler 6 Col 6 Internal index ignore 7 Col 7 0 filler 8 Col 8 Event type T Example A metronome trigger TRIGGER 1 M 32 FEED_ON 1 Corresponding output line metronone at 250 ms MSPB 8000 M 0 1 0 0 T 7 6 MIDI Hardware Errors One of our hardware setups has gotten occasional MIDI hardware errors e g a note value of 0 this occurred about 1 time out of every 15 000 input events There is now some code in linux _midi c see the ReadMidiEvent routine which detects some obvious cases of errors e g a note error of 0 and a diagnostic is printed to the screen In addition a MIDLERROR entry is made in the output file immediately before the data lines a maximum of 10 errors is reported I suggest always checking your output files for the presence of t
60. resolution of approximately 1 keystroke event per millisecond which is adequate for most human behavior 1 consider FTAP to have adequate performance if it can match this millisecond resolution and it does so on my system However not all hardware or drivers can handle the maximal bandwidth This section describes how to check this on your system Once you have a working MIDI setup e g you can play from a keyboard with the midicopy program and you can run simple FTAP parameter files you may wish to verify FTAP MIDI throughput My approach to doing this requires a cable which can connect the MIDI output port back to the MIDI input port If your computer MIDI interface provides female MIDI connectors the required loop can be set up with a standard MIDI cable If the MIDI interface provides male connectors as with most joystick MIDI interfaces then you will need a more specialized cable or connector with female MIDI connectors 5 pin DIN at both ends with pin 2 connected to pin 2 ground pin 4 connected to pin 4 and pin 5 connected to pin 5 Such a loop allows an FTAP feedback event to be immediately interpreted as a keystroke event When FTAP runs the params benchmark looptest file and the system is configured with such a cable FTAP will write a single output priming note both NoteOn and NoteOff and then cycle this message in and out 2000 times On a well performing system this should take a total elapsed time of 4 seconds
61. rted but probably works Default 0 16 3 FULL PARAM_PRINT Print out all parameters in the output file rather than just the default subset With this parameter set to 0 the output file header will only include the obligatory parameter printout see Section 4 2 plus any user specified parameters and will be about 30 lines long If FULL PARAM_PRINT is set to 1 the header will be about 60 lines If you are debugging a parameter file that doesn t work as you expect I suggest setting this to 1 so you know exactly what you re getting I will insist on this if you ask me to troubleshoot a problem Default 0 4 4 String Parameters Some parameters take string values these are typically file names or documentation strings Double quotes although used below should not be used in the parameter file itself The first 3 of the following parameters are values which identify some aspect of the current experimental run they are also used to form the output file name 1 SUB subject id Default sub 2 BLOCK trial block Default block 3 TRIAL trial number Default trial 4 COMMENT A single comment line which will go in the output file Default 5 CLICK1_FILE CLICK2_FILE names of up to two pre existing files of data that will be played during the trial These files must be in the same format as the FTAP output file i e 8 columns though not all columns are actually used and the event typ
62. s have a 10 ms latency for MIDI output at least when used with cards 37 without interrupt capability such as the SoundBlaster 16 That is the driver polls for pending MIDI output every 10 ms 1 jiffie and writes out all pending I O at that time see the midi poll routine in midibuf c in the driver Althought this is probably harmless or adequate for most music applications 1t is not adequate for real time experimental software Section 9 6 describes a method of determining whether this is a problem on your system The commercial 4Front driver does not suffer from this problem though it is only available in binary form 20 from www 4front tech com running the benchmark described in Section 9 6 shows that the 4front driver will run with millisecond precision that is at the maximal throughput of MIDD though it apparently uses busy loops The free ALSA drivers www alsa project com are also supposed to be free of this problem though I haven t tried them 9 4 Tested Card Driver List See also Section C This section lists the card driver tests that I have tested with the loop test in Section 9 6 Please let me know if you have other combinations that work so I can expand this list 9 4 1 Success 1 SB 16 with 4Front Driver 2 Soundblaster Live Value with 4Front Driver 9 4 2 Failure 1 SB 16 with standard Linux driver only 10 ms granularity on output 2 Roland MPU 401 time out errors 9 5 On line Diagnostics
63. s not currently supported however I haven t disabled it so here are the commands It was once useful for learning FTAP and exploring what parameters do but you re probably better off editting a test file in one window and running FTAP from another window Under no circumstances should you do serious data collection this way Interactive mode allows running multiple trials from one invocation of FTAP However the system is not cleanly reset between trials e g parameters which have been changed by triggers will stay changed and internal variables may also not get reset Unless you convince me this is a valuable facility I will probably not respond to comments questions or bug reports on interactive mode Commands 1 f lt PARAMFILE gt read in the parameters in the named parameter file 2 p lt PARAMSTR gt set a single parameter e g p FEED_ON 1 3 t lt TRIAL gt set the trial number 50 4 q quit FTAP 5 r run a trial with the current set of parameters 6 1 list the current set of parameters H User Enhancements Code Changes FTAP provides a fixed set of delay and pitch mappings which can be chosen by integer parameter values Additional pitch or delay mappings could be added following the structure of the routines in map c this requires C code changes Currently there are not clean hooks that allow simple linking in of such functions The necessary steps are 1 Create a define for th
64. second place to my actual research Please cite Finney 2001a in the writeup of any research you do that uses FTAP 2 Installation Initial Use and Evaluation This section will attempt to provide the minimal information you need to be able to work or play with FTAP on a Pentium based Linux system With this setup FTAP should will work fine but data collection times may be a significant number of milliseconds off unless you re on a very heavily loaded machine this is not likely to be perceptible If you decide to use FTAP for millisecond resolution data collection there are a number of additional concerns see Section 9 2 1 Distribution and Installation The distribution as downloaded from the web site is in gzip ed and tar ed format Run gunzip on the downloaded file and then extract the directory hierarchy using tar You will now have a subdirectory named ftap2 1 05 or something close to that Look at the RELEASE_NOTES file and then put the bin ftap binary somewhere where you can execute it e g in your personal bin directory There are no auxiliary files If FTAP will be used by multiple users on your system you might want to put it somewhere like usr local bin but at that point you ll probably also want to recompile it from the provided source code and make it setuid root see Section 9 2 2 Computer and Operating System I have run FTAP on a couple of different Pe
65. should probably be changed to ftap but I have code and shell scripts which expect the former The file naming format is kind of ugly but it forces the file name to usefully identify the experiment conditions 27 If the STDOUT param is set to 1 a data file is not written see description of the STDOUT parameter This facility is no longer supported but probably works 7 1 Comment Lines Parameters and Output Diagnostics The data file starts with a listing of informational non data lines This header cannot be turned off though there is some control over just how much gets printed via the FULL PARAM_PRINT parameter These non data lines e g the parameter listings and output diagnostics are always preceded by the marking of all these lines with in the first column makes them easy to filter out The parameter values are those at the start of the experiment before any trigger changes The following output only information values are listed along with the actual experiment param eter values 1 TIME Time and date that this run of FTAP started 2 VERSION_NUMBER FTAP version number currently 2 1 05 3 PARAMETER FILE Name of the parameter file Important Diagnostic Parameters see Section 9 6 for more details These can be ignored unless you re doing real time data collection 1 SCHED_AV Average time in ms between calls to the output scheduler Less than or equal to 1 is good More than 1 indica
66. t elements will be used All array parameters default to a count of 0 The maximum length of the random delay list is 10 and the maximum length of the metronome cycle is 20 1 RANDDELAY_ARRAY Used in conjunction with FEED_DMODE 2 this allows for a form of random delay Up to 10 delay values can be specified and the delay for each keystroke will be randomly selected from the set The following specification will randomly choose among 100 200 or 300 ms delays RANDDELAY_ARRAY 3 100 200 300 2 MET_PATTERN_ARRAY This allows specification of a pattern on top of the underlying metronome beat that is a pattern of sounded and silent beats The maximum length is 20 beats The following line will sound a cycle of 3 beats followed by a pause where the rate and tone characteristics will be determined by the integer metronome parameters MET_PATTERN_ARRAY 4 1 1 1 0 3 MET_VEL_ARRAY This allows imposing a loudness MIDI velocity pattern on the metronome sequence The following will make the first of every 4 beats louder than the other 3 MET_VEL_ARRAY 4 110 80 80 80 4 MET_CHAN ARRAY This allows creating a pattern of changing timbres on the metronome sequence by specifying the output MIDI channel for each beat this assumes a polytimbral tone generator The following lines will give different sounds for the 1st and 2nd tones of a two beat pattern depending on how the tone generator is programmed to respond on MIDI channels 1
67. tem Common messages cause FTAP to terminate probably ungracefully WARNING I have not tested all of these options so I can t guarantee that they work On the other hand I don t know of any failures If you want to see what the raw data stream from your keyboard looks like use the midicopy program in the bin or utils directory in the FTAP distribution D 2 MIDI Input Devices Here are some specific notes on the keyboards I ve tried Some keyboards may put out MIDI sequences that FTAP is not currently prepared to handle if FTAP gives errors with your keyboard use the midicopy program to determine just what your keyboard controller is doing Successfully tested input devices 1 Roland RD 600 controller works fine with FTAP Encodes key release with an 0x80 status byte and a fixed velocity of 64 Uses running status Use of the Rx and Tx keys allows effective disabling of MIDI Local mode Pressing the pedal seems to put out multiple controller messages for some reason 2 Fatar Studio 49 Encodes key release with an 0x80 status byte and variable velocity Does not use running status Input device only requires a separate tone generator 3 Yamaha DX 100 Uses 0x90 plus 0 velocity for NoteOff but does not use running status Not velocity sensitive constant MIDI velocity of 64 for all keystrokes FTAP s input MIDI parsing is perhaps its weakest point SYSTEM EXCLUSIVE messages are of varying l
68. tes a problem 2 SCHED_MAX The maximum time in ms between output scheduling calls More than 3 or 4 ms is probably bad Running FTAP as root and disabling networking and X Windows will probably improve things 3 SCHED_GT1 SCHED_GT5 SCHED_GT10 Number of times that calls to the internal schedul ing routine were separated by times more than 1 5 or 10 ms respectively Any time more than 5 indicates a problem and there should be no more than a small number greater than 1 4 SCHED_MAX_TIME time of occurrence of the maximum scheduling discrepancy SCHED_MAX ms from trial start On my system trial runs have typically had no more than one or two scheduling times greater than 1 ms Note that even if there are occasional long scheduling times the data is not necessarily corrupt as the scheduling glitch may have occurred at a time when there was nothing to do anyway 28 The following secondary diagnostic variables allow looking at this They are not included in the default printout and may all eventually be removed Secondary Diagnostic Parameters 1 AV_DELAY The overall average delay a possibly useful diagnostic when using random delays Probably bogus if multiple feedback channels are in use 2 DISC_AV output events are scheduled to be written at a certain time but the time they re actually written may be different if something has gone wrong The value is the average descrepancy between actual and correct
69. then your basic MIDI setup should be OK If FTAP nonethless seems to not be working check the MIDI channels in whatever parameter file you re running and look at the output file to see whether or not input is being recorded FTAP isn t doing what I think it should If you ve created a parameter file and it s doing something but not what you think it should be doing here are some suggestions in approximate order See also Section 4 7 1 8 3 Look at your input file and make sure you understand what each line is supposed to do Remove lines that are not relevant for your particular experiment Make sure that any parameters that are important to your experiment are explicitly specified rather than using defaults Check the output file everything FTAP has done is in it Make sure you understand it Turn on the FULL_PARAM_ PRINT param so the output file will have a full listing of all the active parameter values for your experiment Reread this Reference Manual and the User s Manual to see that you haven t missed something Look at the C source and or contact me Quirks Bugs Features Some quirks of FTAP are described here These are placed here to aid in troubleshooting You can tell me which one s are intolerable for future releases 1 FTAP will print out a diagnostic on any MIDI message it can t parse such as SYSEX messages it used to abort FTAP handles a lot of different MIDI messages a
70. trigger actions is included in these data lines The data line format was originally designed for MIDI note events such as keystrokes metronome and feedback However the data file also contains output lines for controller events and 29 lines showing when trigger events occurred these both require different types of information The output format for these events retains the same column layout as that for MIDI note events but reuse of the fields has resulting in a somewhat inelegant mix of formatting However it should be easy to extract whatever information is of interest Data lines contain 8 columns Column 1 always indicates the elapsed millisecond time of the recorded event relative to trial start and column 8 always identifies the event type The event type codes are Note data 1 K Keystroke both NoteOn and NoteOff that is key press or release 2 F Feedback sound in response to a keystroke May be delayed or mapped from the keystroke itself 3 M Metronome event 4 J Junk event Currently only applies to masking noise Other 1 C MIDI controller 2 G Output feedback for a MIDI controller not mnemonic simply the letter after F 3 T Trigger event 7 3 Note Data If column 8 is K F M or J columns 1 7 have the following contents 1 Col 1 Milliseconds since trial start 2 Col 2 D own for key press U p for
71. x90 with a velocity of 0 The MIDI specification also allows optimizing data stream usage with running status if multiple messages in a sequence have the same status byte the status byte can be omitted from all except the first message Signalling NoteOff with a 0x90 message with zero velocity allows extensive use of running status FTAP can handle all of the above variants internally it places all input data into individual messages without running status and with NoteOff Events encoded separately from NoteOn events 44 Velocity in NoteOff events is discarded If FTAP detects any MIDI errors the MIDI ERROR lines in the output file indicate FTAP s parsed input not the raw input Keyboards can also output many other event types Attached pedals and the modulation wheel create Control Change Events and the Pitch Bend Wheel or the lip sensor on a wind controller may put out Pitch Wheel change events There are two different types of Key Pressure events In addition some keyboards will send MIDI ACTIVE SENSE MIDI CLOCK or System Exclusive messages FTAP cannot deal with variable length System Exclusive messages a Juno 106 keyboard puts these out for some reason and it will quit inelegantly FTAP will correctly process and record most most controller messages in the output file MIDI Channel Pressure and Program Change will be ignored and discarded as will Timing Clock or Active Sensing messages SYSEX messages or other Sys
Download Pdf Manuals
Related Search
Related Contents
Pioneer DVD-U04S User's Manual Samsung CLP-320N Manual de Usuario ESC/Java2 Implementation Notes Tektronix 1730-Series User's Manual ACRES 3 User Guide Mantenimiento - Schorch Elektrische Maschinen und Antriebe GmbH Kingston Technology ValueRAM 8GB DDR3-1600MHz ECC Copyright © All rights reserved.
Failed to retrieve file