7. Additional features to support for with the new Mac OS

advertisement
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]
Download