A description of the Major tasks and milestones of PsyScope Project development 1. General Considerations, Target Platform and Target Responsiveness 2. System Study and Analysis 3. Porting the existing Mac OS 9 toolbox application to Mac OS X Carbon application 4. Quality Assurance 5. Creating Project Builder compatible version of application ported in Step 3 6. Fixing a defined list of bugs that are existing in Mac OS 9 version of PsyScope 7. Additional features to support for with the new Mac OS X version. 8. Second set of feature additions (upon funds availability)- 1. Target platform This sections briefly explains the target to be achieved for this project. Porting existing PsyScope application to Mac OS X and providing a commercial compiler independent version of application sources is the main goal of this project. This target will be achieved in two steps: first the application will be ported to to Mac OS X CW Pro version, and then it will be ported to Apple Project Builder. During the Carbonization process, major part of the sources are kept intact and only non-portable code will be re-written for Mac OS X. The UI layout and functionality is retained other than Mac OS X specific modifications. Second goal of this project is to retain the responsiveness of PsyScope similar to its present Mac OS 9 version. Mac OS X being a Pre-emptive multitasking OS has its limitation on the quantum of time allocated to each process, which is unavoidable for any process for a longer period of time. The goal is to increase this time quantum allocated to PsyScope, in order to increase the productivity of the application. One and most suitable way to achieve this is to run the experiment as a real-time thread. Though this will not assure complete CPU time allocation to PsyScope for a longer period of time, it promises a much better performance. There are limitations for this approach (which are mostly inevitable): -- PsyScope performance will depend on other Real-Time processes running in the OS at the time of execution. We must understand that, when there are multiple Real-Time threads running in the system, the OS has complete privilege to knock down the thread priority of any process. -- Machine configuration. The application will be tested on variety of machines. But, when it comes to millisecond accuracy, following machine configuration is recommended (as per the discussion with Prof. Luca Bonatti), PowerMac G3 or G4 with minimum 512k RAM. Fixing a set of bugs mentioned in the section 6 is third target of this project. The sections 7 and 8 will be fourth target for this project. The details about the features to be added are listed in those sections. Generalities: -- The ported application will be a Carbon application. -- Target platforms for this project will be Mac OS X (v10.2 and later versions). Mac OS 9 variants are not supported in this version of PsyScope. -- We use CW Pro 8 and Project Builder v2.1 (Dec 2002) are used as development tools. -- Present Help System will be maintained as. -- Only English version of PsyScope is supported and no Localization support is provided with this development. -- Present UI layout is maintained to greater extent. But we would modify the UI to meet Apple UI standards where ever necessary. -- Robosoft will would document the sources they modify during the process of development. Original and unmodified sources will be left as is. -- Complete schedule for Bug fixes and Feature addition stage will be provided at the end of Carbonizing phase. [TOP] 2. System Study and Analysis Understanding the existing sources of the project is major goal of this stage. Along with the PsyScope application related source code, source code related to System Extensions and any other modules have to be analyzed to obtain clear picture of the development effort. A design document, which reflects the understanding of the project, is developed during this phase and will be updated as and when the issues are clarified. [TOP] 3. Porting the existing Mac OS 9 Toolbox application to Mac OS X Carbon application. This task involves issues related to porting Mac OS 9 version of PsyScope to Mac OS X. Existing CodeWarrior Pro Project is modified to Carbon CodeWarrior Pro Project during this process. This task also deals with porting System Extensions and other related modules to Mac OS X. Along with porting, understanding of the source modules is also another goal of this module. During the process of porting, an attempt would be made to fix some of the existing bugs. [TOP] 4. Quality Assurance. In this phase all the bugs that crop up during the carbonizing phase are fixed and tested again. [TOP] 5. Creating Project Builder compatible version of application ported in Step 3. PsyScope is ported to build under Apple Project Builder. Another Quality Assurance phase is carried out to fix all the issues that crop up during this development. [TOP] 6. Fixing bugs that are existing in the current Mac OS 9 version of PsyScope In this section, a list of bugs that exist with current Mac OS 9 PsyScope version is fixed. The following section lists the bugs that need a fix. 6.1 Script presenting Movies work erratically. Fixing issues related to movie playing. Here you will find a description of the bug and the relevant supporting files. 6.2 Presenting a stimulus repeatedly in a port with the instruction "runevent" works erratically. Here you will find a description of the bug and the relevant supporting files. 6.3 Values of variables that change within trial execution are saved only with the last value that they are given at the end of the trial Here you will find a description of the bug and the relevant supporting files. 6.4 Problems with randomization This still needs to be worked out. For the moment, I have this description of the bug: in certain conditions, a list of stimuli attached to a factor table has to be presented randomly but is not presented in its totality. Rather, rather, stimulus already presented is presented more than once (as if the algorithm for randomization sometimes screwed up) and some stimulus is never presented. If you can reproduce this bug with a clean and simple script, and feel like writing a clear doc for it, please let me have it. [TOP] 7. Additional feature support for Mac OS X PsyScope: The main goal here is to optimize the application to provide greater accuracy. In this phase, some new features are also added to the PsyScope on Mac OS X. Following is the list of features to be added: 7.1 Support for new formats: Add support for JPEG, PhotoShop (.psd) and possibly JPEG2000 picture formats, and MP3. 7.2 A wider set of commands for Movies: Currently Psyscope can only play movies. A wider spectrum of commands to act on movies should be added, similar to those one finds in elementary movie viewer interfaces. A more detailed description of these commands can be found here. 7.3 Communication with interactive movies: We want PsyScope to be able to send events to interactive movies. If possible (but this is not a compulsory feature), interactive movies must also be able to send some information back to Psyscope. A more detailed description can be found here. 7.4 Report of Actual Event occurrence and duration with uncertainty measures: Currently it is possible to report partial information of the actual timing of event occurrence and duration (by turning on the “full timing statistics for condition” flag in the Experiment Data Output menu, or equivalently by writing DataFields: FULL_TIMING_STATS in the script template). However, timing statistics is reliable only if events are terminated with the “EndEvent” instruction. Timing should be reported accurately in any condition, with 1ms accuracy at most. A more complete description of this feature is available here. 7.5 Stereo Improvements: Now Psyscope can send a stereo sound selectively on either one or the other channel, by using a cumbersome procedure requiring labelling of separate mono files. In the future version, it should be possible to directly include stereo files of any of the supported types without need to label them. Also, it should be possible to change the sound volume of the two channels independently, so as to have better sound localization. A more complete description of this feature is available here. 7.6 Sound Recording: The user should be able to record input sounds from an external microphone. A more complete description of this feature is available here. [TOP] 8. Second set of feature additions. These features are added as second level of development, only if further funds become available. Appropriate estimate will be provided to these at the end of first iteration of development. The following are some of the new set of features that are to be added: 8.1 Randomizing Lists with conditions: Currently a list can only be fully randomized, in a "blind" way. However, often a researcher needs to put constraints on the randomized list – i.e., an item cannot occur more than 3 times in a row. We would like to have this kind of list randomization directly accessible within Psyscope. A more complete description of this feature is available here. 8.2 Add variables of type String and save them into Data File: Currently, only values of type integer can be saved in data files. Furthermore, in the current version there is no variable of type “string”. This should be added, and it should be made possible to save the values of such variables in the data files. 8.3 Add Center and Right justification for Paragraph Events: Currently the events of type “paragraph” are only left justified. It should be possible to add at least center justification relative to the port in which they appear. In the graphical interface that would be added by adding another entry into the “stimulus attribs” list available for each such events. 8.4 Adding an Event that can be executed at and Absolute time relative to the beginning of the Experiment: Currently psyscope handles events through templates. When a template executes, events are run. However, sometimes one wants that something happens regardless of what template is running. We would need an event that behaves in the following way: no matter what template is running, if a condition is reached (typically, if the absolute time from the beginning of the experiment is, say, 15 seconds), then the event is performed. That should be easy to implement. Maybe one wants a predicate like AbsoluteTime, to be distinguished by Time, which is generally relative to the template in which the event sits. Graphically, one can think that these events sit in the normal graphical interface, maybe just changing colors (i.e., appearing in green, or presented in negative), not linked to any template (or linked to all). They are defined with conditions like Event1:: (TO BE DEFINED) StartRef: AbsoluteTime[1500] (or 1500 after AbsoluteTime[0], where this is the beginning of the experiment, i.e., the execution of the first event in the first trial of the first template of the experiment.) 8.5 Sending Signals to USB port: Currently PsyScope can send signals out of the Mac through the button box. This introduces some severe limitations. An “usb” type of event (just as now there is a movie type or a sound type of event) should be added so that one USB port can be directly addressed. A more detailed description can be found here. [TOP]