department of computer science university of …rolecoll/role-collddspring.pdfdepartment of computer...
TRANSCRIPT
Department of Computer Science University of Nevada, Reno
Role-Coll Role Based Collaboration Software
Design Documentation
CS 425
3/30/2007 Software Team: Harold De Armas, Erik Hanchett, Raymond Lee, Zack Norcross
Business Team: Mark Tyman, Max Volger
Internal Advisors: Sergiu Dascalu, PhD., Gary Valiere PhD.
Role-Coll Design Documentation
2 of 29 pages
Table of Contents 1 Introduction .................................................................................................................................. 3 2 High-Level and Medium-Level Design ....................................................................................... 4
2.1 System Level Design ............................................................................................................. 4 2.1.1 Login Frame subsystem .................................................................................................. 4 2.1.2 Administrative Role implementation ............................................................................. 4 2.1.3 User Information and Document subsystem .................................................................. 4 2.1.4 Menu and Main Frame subsystem .................................................................................. 4 2.1.5 User Interface (GUI) Music module ............................................................................... 4
2.2 Class Diagram ....................................................................................................................... 5 2.3 Class Descriptions ................................................................................................................. 6
2.3.1 Login Frame Class .......................................................................................................... 6 2.3.2 Main Frame Class ........................................................................................................... 7 2.3.3 Admin Frame Class ........................................................................................................ 9 2.3.4 User Bean Class ............................................................................................................ 10 2.3.5 User Tree Node Class ................................................................................................... 11
2.4 Database Diagram ............................................................................................................... 12 2.5 Hardware Design Diagram .................................................................................................. 13
3 Detailed Design .......................................................................................................................... 14 3.1 Engineering Considerations ................................................................................................ 18
3.1.1 IEEE 802.11 ................................................................................................................. 18 3.1.2 EIA RS-232 .................................................................................................................. 18 3.1.3 FCC Part 15 – Radio Frequency Devices ..................................................................... 18 3.1.4 USB 2.0 ........................................................................................................................ 18 3.1.5 RoHS ............................................................................................................................ 18
4 User Interface Design ................................................................................................................ 19 4.1 Hardware related screenshots .............................................................................................. 22
5 Annotated References ................................................................................................................ 23 5.1 Music Notation (Berklee Guide) (Paperback) ..................................................................... 23 5.2 E-Stand Music ..................................................................................................................... 23 5.3 Imagionation Cubed ............................................................................................................ 23 5.4 Sibelius ................................................................................................................................ 23 5.5 Finale ................................................................................................................................... 24 5.6 C# White Board ................................................................................................................... 24 5.7 Open-Xchange ..................................................................................................................... 24 5.8 Babylon Java Chat ............................................................................................................... 24 5.9 Java USB API ...................................................................................................................... 24 5.10 IR Prox Logic .................................................................................................................... 25 5.11 8051 Microcontroller FAQ ................................................................................................ 25
6 Glossary of Terms ...................................................................................................................... 26 7 Design Document Revisions ...................................................................................................... 28 Contributions of team members .................................................................................................... 29
Harold De Armas ...................................................................................................................... 29 Erik Hanchett ............................................................................................................................. 29 Raymond Lee ............................................................................................................................ 29 Zack Norcross ........................................................................................................................... 29
Role-Coll Design Documentation
3 of 29 pages
1 Introduction The objective of Role-Coll is to be an interactive collaboration product for use in the music industry. Role-Coll will allow multiple parties to view and make changes to a piece of music to help enhance the performance setting. The key advantage is the product will allow users to create changes to a piece of music based on their role in the orchestra. In this environment, users can freely make changes to their own music, and propose changes to leaders of specific groups, who can then share these changes to everyone in their section.
Collaborative software is a powerful tool because it facilitates the creation and dissemination of information. Collaboration can currently be improved in the following ways; by adding roles to each of the users viewing a document, allowing users to annotate their document separately from the world, and allowing a variety of the types of documents that are collaborated on.
By focusing on the music aspect of collaborative software, we enter a market that is relatively free from competition. The current state-of-the-art in collaborative music software includes the ability for users to share a document among an orchestra, however annotations are limited to pen strokes and changes to the music are generally not allowed. Role-Coll has been designed from the bottom up to stand out from its competition. Role-Coll will have the ability for users to open, make changes to a document, and have others be able to view these changes in real time. Role-Coll will also include many other features that will help during the actual performance as well.
Along with the software implantation for Role Coll, there will be hardware components used to enhance the music performance function of the software. The hardware component will be used when a user is in the performance mode to advance and go back pages. There are two options that can be implemented. The optimal solution is to build a step pad where the user can step to the right or left to advance or go back a page. This Role-Coll Role Based Collaboration Software would involve making a step pad and using a keyboard circuit. The step pad would act like a switch, similar to a key stroke. The switch would be connected to a keyboard circuit where the input would be decoded and sent to the tablet pc. A future improvement on the step pad would be turning it into a wireless device that talks to the tablet pc rather than using a USB connection.
The second option is to use two infrared sensors in front of the tablet and detect if the user waves their hand in front of it. The two infrared sensors would be attached to a microcontroller where it will have a program to detect if both sensors are triggered and in what order. The microcontroller will send a signal to the tablet PC through the USB port, where the software application is to handle the appropriate command.
With the combination of software and hardware Role-Coll will be the premier music performance product for the future. With that said there is one issue that must be addressed. A patent for a product similar to Role-Coll was recently discovered however the Role-Coll product is sufficiently different from the patent. The patent describes a system where the conductor/composer is working on a piece of music and is creating and modifying it on the fly. Role-Coll is not a music composition tool; it is a music performance tool. Role-Coll also adds roles to the orchestra members which are not present in the patent. Role-Coll provides users with the ability to changes pages during a performance via foot controls or hand sensors depending on accessibility of the instrument. This addition is not present in the patent. The patent does not describe an overall interface for the music but does describe an input scheme via keyboard and pen input. Since Role-Coll is not dependent on either, there is no conflict with the patent.
Role-Col
2 High
2.1 Sys
2.1.1 LoThe loginstarting f
2.1.2 AThe admuser’s ideappropria
2.1.3 UsThe user and user informati
2.1.4 MThese sumain framscreen. T
2.1.5 UsThe GUIthe systemusing the
ll
h-Level
stem Lev
ogin Framn frame subsfrom initial l
dministrainistrative roentity is conate permissio
ser Informinformationinformationion and mak
Menu and Mubsystems come. The meThe main fra
ser InterfaI music modum and intera
e Java Swing
and Med
vel Design
me subsyssystem is theogin to docu
ative Role ole impleme
nfirmed, this ons to the lo
mation andn and documn are stored inke changes.
Main Framontrol the eveenu drop dowame consists
ace (GUI) ule will be thact with the ug library.
dium-Le
n
Figure 1. S
stem e main systemument retriev
implemenntation dealsimplementa
ogin frame su
d Documement subsyste
n a database
me subsysents and look
wn triggers cs of several s
Music mohe front-enduser. The pr
evel Des
System Level D
m that initiatval and subs
ntation s with all ad
ation opens thubsystem.
ent subsyem deals withe and is inter
stem k and feel of
certain eventsmaller pane
odule d of the systerimary imple
sign
Design
tes and contequent editin
dmin and rolehe correct in
ystem h data storag
rfaced throug
f the drop dots to occur tos that show
em. It will bementation o
Design
rols programng.
e assignmennterface and
ge and retriegh this subsy
own menus ao be displayethe tools and
be involved wof the GUI w
n Document
4 of 29 p
m execution
nts. After a grants the
eval. Documystem to get
and panes oned on d tree hierarc
with all partswill be made
tation
pages
ments
n the
chy.
s of
Role-Coll Design Documentation
5 of 29 pages
2.2 Class Diagram
UserBean (from rolecoll::beans)
-userFirstName:String= null -userLastName:String= null -userLogin:String= null -userID:String= null -rolePriority:int= 0 -roleName:String= null -superiorID:String= null -password:String= null -admin:boolean= false << create >>+UserBean():UserBean +getPassword():String +getRoleName():String +getRolePriority():int +getSuperiorID():String +getUserID():String +getUserFirstName():String +getUserLastName():String +getUserLogin():String +setPassword(password:String):void +setRoleName(roleName:String):void +setRolePriority(rolePriority:int):void +setSuperiorID(superiorID:String):void +setUserID(userID:String):void +setUserFirstName(userFirstName:String):void +setUserLastName(userLastName:String):void +setUserLogin(userLogin:String):void +isAdmin():boolean +setAdmin(admin:boolean):void
UserTreeNode (from rolecoll::beans)
<< create >>+UserTreeNode():UserTreeNode << create >>+UserTreeNode(userObject:Object):UserTreeNode << create >>+UserTreeNode(userObject:Object,allowsChildren:boolean):UserTreeNode +getUserInfo():UserBean +setUserInfo(userInfo:UserBean):void
LoginFrame (from rolecoll::ui::frames)
<< create >>+LoginFrame():LoginFrame -initComponents():void -themeComboBoxItemStateChanged():void -loginActionPerformed():void -showLoginError():void -tryLogin():void +setMainFrame(mf:MainFrame):void +getmLoginField():JTextField +main(args:String[]):void
GUIBean (from rolecoll::beans)
-lfMap:HashMap +THEME_LIST:String[]= new String[] {"Acryl", "Aero", "Aluminium", "Bernstein",ı "Fast", "HiFi", "Luna", "McWin", "Mint", "Noire", "Smart"} +PLAF_METAL:String= "javax.swing.plaf.metal.MetalLookAndFeel" +PLAF_WINDOWS:String= "com.sun.java.swing.plaf.windows.WindowsLookAndFeel" +PLAF_MOTIF:String= "com.sun.java.swing.plaf.motif.MotifLookAndFeel" +PLAF_MAC:String= "com.sun.java.swing.plaf.mac.MacLookAndFeel" +PLAF_OTHER:String= "com.jgoodies.looks.plastic.PlasticXPLookAndFeel" +PLAF_ACRYL:String= "com.jtattoo.plaf.acryl.AcrylLookAndFeel" +PLAF_AERO:String= "com.jtattoo.plaf.aero.AeroLookAndFeel" +PLAF_ALUMINIUM:String= "com.jtattoo.plaf.aluminium.AluminiumLookAndFeel" +PLAF_BERNSTEIN:String= "com.jtattoo.plaf.bernstein.BernsteinLookAndFeel" +PLAF_FAST:String= "com.jtattoo.plaf.fast.FastLookAndFeel" +PLAF_HIFI:String= "com.jtattoo.plaf.hifi.HiFiLookAndFeel" +PLAF_LUNA:String= "com.jtattoo.plaf.luna.LunaLookAndFeel" +PLAF_MCWIN:String= "com.jtattoo.plaf.mcwin.McWinLookAndFeel" +PLAF_MINT:String= "com.jtattoo.plaf.mint.MintLookAndFeel" +PLAF_NOIRE:String= "com.jtattoo.plaf.noire.NoireLookAndFeel" +PLAF_SMART:String= "com.jtattoo.plaf.smart.SmartLookAndFeel" -lookAndFeel:String= PLAF_ACRYL -theme:String= "Default" << initializer >>-__initializer():void << create >>+GUIBean():GUIBean +setLookAndFeel(aLookAndFeel:String):void +getLookAndFeel():String +setTheme(aTheme:String):void +getTheme():String +isMetalLook():boolean +isWindowsLook():boolean +isMotifLook():boolean +isMacLook():boolean +isOtherLook():boolean +isFastLook():boolean +isSmartLook():boolean +isAcrylLook():boolean +isAeroLook():boolean +isBernsteinLook():boolean +isAluminiumLook():boolean +isMcWinLook():boolean +isMintLook():boolean +isHiFiLook():boolean +isNoireLook():boolean +isLunaLook():boolean +updateLF(lf:String):void +updateLF(lf:String,comp:JComponent):void
MainFrame (from rolecoll::ui::frames)
-yAdjustment:int= 12 -xAdjustment:int= 1 -heightAdjustment:int= 13 -widthAdjustment:int= 2 -inComponent:boolean -isMousePressed:boolean= false << create >>+MainFrame():MainFrame -initComponents():void -createTextNote():void -buttonOpenEvent(evt:ActionEvent):void -menuOpenEvent(evt:ActionEvent):void -openAction():void -createMusicPage():View -createUsersTab():View -createToolsTab():View ~createMenu():void -removeInternalWindow(e:MouseEvent):void -createNote(noteClass:String):void
AdminFrame (from rolecoll::ui::frames)
<< create >>+AdminFrame():AdminFrame -initComponents():void -menuAddUserEvent(evt:ActionEvent):void -menuEditUserEvent(evt:ActionEvent):void -menuDeleteUserEvent(evt:ActionEvent):void -loadUserInfoEvent(evt:FocusEvent):void +main(args:String[]):void
EditUserFrame (from rolecoll::ui::frames)
<< create >>+EditUserFrame():EditUserFrame -initComponents():void +main(args:String[]):void
NewUserFrame (from rolecoll::ui::frames)
<< create >>+NewUserFrame():NewUserFrame -initComponents():void +main(args:String[]):void
Figure 2. Class Diagram
Role-Coll Design Documentation
6 of 29 pages
2.3 Class Descriptions
2.3.1 Login Frame Class The login frame class will display the login prompt and accept the username and password input from user. The login frame class will also call the functions to help validate the input from user. Login Frame Class
Method: loginActionPerformed Visibility: private
Return Type: void Parameters: Description: Calls tryLogin method which checks the password and authenticated user. If user passes
password check admin frame is opened else error is shown. Login Frame Class
Method: showLoginError Visibility: private
Return Type: void Parameters: Description: Displays error message that incorrect password was used.
Login Frame Class
Method: tryLogin Visibility: private
Return Type: void Parameters: Description: Checks password and authenticates user. If user passes password check admin frame is
opened else an error is shown. Login Frame Class
Method: initComponents Visibility: private
Return Type: void Parameters: Description: Initializes all the panels, buttons and all other GUI elements to the LoginFrame.
Role-Coll Design Documentation
7 of 29 pages
2.3.2 Main Frame Class The main frame class handles the GUI elements in the normal view of the program. It will handle button click events and other click events. Main Frame Class
Method: openAction Visibility: private
Return Type: void Parameters: Description: When user selects to open a file this class is called and the file open user pane is
displayed. Main Frame Class
Method: createMusicPage Visibility: private
Return Type: void Parameters: Description: After a file is opened a music user pane is created for the file to be displayed on.
Main Frame Class
Method: createUsersTab Visibility: private
Return Type: void Parameters: Description: Creates a jscrollpane on the left side of the application that displays all the users of the
program in the associated tree hierarchy. Main Frame Class
Method: createToolsTab Visibility: private
Return Type: void Parameters: Description: Creates a jscrollpane on the right side of the application that displays all possible tools
the application can use. Main Frame Class
Method: createToolsTab Visibility: private
Return Type: void Parameters: Description: Creates a jscrollpane on the right side of the application that displays all possible tools
the application can use.
Role-Coll Design Documentation
8 of 29 pages
Main Frame Class Method: createMenu
Visibility: private Return Type: void
Parameters: Description: Creates a menu bar at the top of the program, including File, Open, Close.
Main Frame Class
Method: createTextNote Visibility: private
Return Type: void Parameters: Description: Calls createNote method that allows for notes to be dragged on to the music and be
displayed.
Role-Coll Design Documentation
9 of 29 pages
2.3.3 Admin Frame Class The admin frame class is used to control the GUI elements in the admin view. It will handle the click events and button click events for the admin view. Admin Frame Class
Method: menuAdduserEvent Visibility: private
Return Type: void Parameters: Description: Creates add user frame when admin logins in and chooses add user.
Admin Frame Class
Method: initComponents Visibility: private
Return Type: void Parameters: Description: Initializes all jpanels and gathers all information for the admin frame.
Admin Frame Class
Method: menuEditUserEvent Visibility: private
Return Type: void Parameters: Description: Allows for editing of selected users from menu.
Admin Frame Class
Method: menuDeleteUserEvent Visibility: private
Return Type: void Parameters: Description: Event is triggered when delete users is select from admin frame. Deletes user info.
Admin Frame Class
Method: loadUserInfoEvent Visibility: private
Return Type: void Parameters: Description: Loads all the user info into the panels and frames on screen for the admin.
Role-Coll Design Documentation
10 of 29 pages
2.3.4 User Bean Class The user bean class is used to store information about specific users to be used when calling up available documents and permissions. User Bean Class
Method: getRolePriority Visibility: public
Return Type: int Parameters: Description: Returns the RolePriority
User Bean Class
Method: getSuperiorID Visibility: public
Return Type: string Parameters: Description: Returns the string user Id
User Bean Class
Method: getUserID Visibility: public
Return Type: string Parameters: Description: Returns the User Id
User Bean Class
Method: getUserFirstName Visibility: public
Return Type: string Parameters: Description: Returns the users first name
User Bean Class
Method: setUserLogin Visibility: public
Return Type: void Parameters: string Description: Receives a string and sets userLogin to the string passed in.
User Bean Class
Method: setAdmin Visibility: public
Return Type: void Parameters: boolean Description: Makes user admin if login was from admin.
Role-Coll Design Documentation
11 of 29 pages
2.3.5 User Tree Node Class The user tree node class is used to store a hierarchy of users in order to determine the superiors and subordinates of a specific user. User Tree Node Class
Method: getUserInfo Visibility: public
Return Type: string Parameters: Description: Returns the user id
User Tree Node Class
Method: setUserInfo Visibility: public
Return Type: void Parameters: string Description: Sets the userInfo variable to the string passed in.
User Tree Node Class
Method: UserTreeNode (Constructor) Visibility: public
Return Type: UserTreeNode Parameters: object Description: Creates a tree node that has no children and no parent, later this used to create tree from
xml.
Role-Coll Design Documentation
12 of 29 pages
2.4 Database Diagram Figure 3 shows the database tables, relationships, keys and fields to be used in the database.
Users User_ID
− User_Name − Password_Hash
Memberships Membership_ID User_ID Role_ID
− StartDate − EndDate
Roles Role_ID
− RoleName − tid − pnt − lft − rgt
Performances Performance_ID Role_ID Document_ID
− Part_ID − StartDate − EndDate
Documents Document_ID
− DocumentName − DocumentURL − UploadDate − ModDate
Updates Note_ID Performance_ID
− NoteArgs − DateTime
Notes Note_ID User_ID Update_ID
− NoteArgs − isModified
Requests Request_ID Performance_ID
− NoteArgs − DateTime
Legend Primary Key Foreign Key
− Data Member
Figure 3. Database Diagram
Role-Coll Design Documentation
13 of 29 pages
2.5 Hardware Design Diagram
Figure 4 depicts a high level schematic of the step pad. The step pad will be about 3 feet wide. There will be three parts the user will deal with on the step pad; the stand, right step, and the left step. These parts are illustrated in the upper diagram in Figure 4. The user will be able to rest their feet in the middle during the performance. When they step on the right arrow, the page will advance. When they step on the left arrow, the page will go back. On the technical side, the left and right arrows will act like switches connected to a keyboard circuit board. The two signals will be unique to the keyboard decoder. The keyboard circuit board will relay an interrupt to the software. From the keyboard circuit board a USB connection will be required to talk to the tablet PC. For a future improvement on the step pad, a wireless connection to the tablet PC will complete the features required.
Figure 5. High level IR schematic
Figure 6. Low level IR schematic Figure 5 illustrates the infrared (IR) implementation for the page turning device. The circuit will require two light emitting diodes (LED) to detect a hand wave. The diodes will be able to detect a hand wave from left to right or right to left that will signal a page turn. Once the hand wave is detected, the IR sensors will send the data to a microcontroller, like an Intel 8051, where it will be processed and encoded. The 8051 will send the data to the tablet PC. There will be a conversion from the standard serial output from the 8051 to the standard USB connection on the tablet PC. The software will read the input and act on it accordingly. Figure 6 contains a low level schematic of the implementation.
Figure 4. High Level step pad schematic
Role-Coll Design Documentation
14 of 29 pages
3 Detailed Design
Situation: Login Validation Event: When user first opens program.
Description: The pseudocode describes the actions taken when the user first opens the program and is prompted for a username and password. The function will look in the database for the username and password and see if the input was correct.
Pseudocode: Login(int password, int name) { pass = md5(password) query = “SELECT pw FROM users WHERE ” + “login = ‘name’ and password =pass” if(!result = @mysql_query (query, result)) print “Error Database is down try again” if(mysql_num_rows(result) != 1) { print “Wrong user name or password } else { print “Conratulations your logged in!” continue on with program loginvariable = 1 } }
Role-Coll Design Documentation
15 of 29 pages
Situation: Edit-Submit Changes Event: When user saves changes to the document.
Description: The data-flow diagram illustrates the flow of data when a user is saving changes to a document. It starts with the user requesting a save and goes through the process that occurs when the save is accepted and how it is pushed through the database to other users.
Data-Flow Diagram:
Permissions Validator
User’s Roles
Requested Document Name
Database
Document Request
Document Constructor
File Server
Document Updates
Document URL
Document XML
Document Display Final Document XML
Screen
Start
Finish
Role-Col
SituationEve
Descripti
Flow-ChDiagra
ll
n: Login Roent: When uion: The flo
tree vie
hart am:
ole Proceduuser verificatiow chart descrew based on u
ures ion is successribes the actiouser’s role in t
sful, begin theons that need the organizati
e process to loto be taken toion.
Design
oad interface o load the cor
n Document
16 of 29 p
and documenrrect view and
tation
pages
nts. d file
Role-Coll Design Documentation
17 of 29 pages
Situation: Edit-Submit Changes Event: “Save” button is clicked.
Description: The pseudocode describes the actions taken when the save button is clicked. Depending on the role of the user, the document save will perform different actions. It also shows how edited and submitted appendices are handled.
Pseudocode: IF user has privileges to add notes to a document. then the notes are saved to the updates table in the
database and pushed to all users the next time the connect ELSE the notes are saved to the requests table and the users
superior can accept or reject them. IF the superior accepts the notes. then the notes are moved to the updates table and all users
documents are updated the next time they connect. ELSE the notes are only visible on the users local document. And
the notes are updated to rejected in the requests database.
Role-Coll Design Documentation
18 of 29 pages
3.1 Engineering Considerations 3.1.1 IEEE 802.11 http://standards.ieee.org/getieee802/802.11.html Refers to a family of specifications developed by the IEEE for wireless LAN technology. 802.11 specifies an over-the-air interface between a wireless client and a base station or between two wireless clients. The IEEE accepted the specification in 1997. 802.11g applies to wireless LANs and provides 20+ Mbps in the 2.4 GHz band.
3.1.2 EIA RS-232 http://en.wikipedia.org/wiki/RS232 Short for recommended standard-232C, a standard interface approved by the Electronic Industries Alliance (EIA) for connecting serial devices. In 1987, the EIA released a new version of the standard and changed the name to EIA-232- D. And in 1991, the EIA teamed up with Telecommunications Industry association (TIA) and issued a new version of the standard called EIA/TIA-232-E. Many people, however, still refer to the standard as RS-232C, or just RS-232.
3.1.3 FCC Part 15 – Radio Frequency Devices www.fcc.gov/oet/info/rules/part15/part15-8-14-06.pdf This standard is intended to regulate wireless devices using radio frequency. For the step pad device it must follow the following: 1. This device may not cause harmful interference 2. This device must accept interference received, including interference that may cause undesired operation.
3.1.4 USB 2.0 http://www.usb.org/developers/docs/ Short for Universal Serial Bus, an external bus standard that supports data transfer rates of 12 Mbps. A single USB port can be used to connect up to 127 peripheral devices, such as mice, modems, and keyboards. USB also supports Plug-and- Play installation and hot plugging. Also referred to as Hi-Speed USB, USB 2.0 is an external bus that supports data rates up to 480Mbps. USB 2.0 is an extension of USB 1.1. USB 2.0 is fully compatible with USB 1.1 and uses the same cables and connectors.
3.1.5 RoHS http://www.samtec.com/standard_products/environmental_compliance/requirements/rohs_req.asp The RoHS Directive stands for "the restriction of the use of certain hazardous substances in electrical and electronic equipment". This Directive bans the placing on the EU market of new electrical and electronic equipment containing more than agreed levels of lead, cadmium, mercury, hexavalent chromium, polybrominated biphenyl (PBB) and polybrominated diphenyl ether (PBDE) flame retardants.
Role-Coll Design Documentation
19 of 29 pages
4 User Interface Design This section contains screenshots of the current version of the Roll-Coll Music Stand.
` Figure 7. The login frame for Role-Coll
Figure 8. Dialog frame shown if a user enters an incorrect user name or password
Figure 9. Users panel is shown on the right
Figure 10. Tools panel is shown on the left
Figure 11. An open note is shown in the center of this document
Figure 12. The same note without the edit frame around it
Role-Coll Design Documentation
21 of 29 pages
Figure 13. Open skin menu
Figure 14. One of the 11 available skins
Figure 15. Open document dialog
Figure 16. Quit dialog
Role-Coll Design Documentation
22 of 29 pages
4.1 Hardware related screenshots
Figure 17. Goal of the final product for the step pad
Figure 18. Keyboard circuit used for step pad
Figure 19. A picture of a photodiode that will be used for the infrared sensor
Figure 20. An example of an 8051 microcontroller on a circuit board
Role-Coll Design Documentation
23 of 29 pages
5 Annotated References
5.1 Music Notation (Berklee Guide) (Paperback) http://www.amazon.com/Music-Notation-Berklee-Guide McGrain/dp/0793508479/ref=pd_bbs_sr_1/103-5281432- 8149441?ie=UTF8&s=books&qid=1173318402&sr=8-1 Learn the essentials of music notation, from fundamental pitch and rhythm placement to intricate meter and voicing alignments. This book also covers the correct way to subdivide rhythms and notate complex articulations and dynamics. An excellent resource for both written and computer notation software!
5.2 E-Stand Music http://www.estandmusic.com/ Estand is a music performance assistant tool. It’s a software tool with an optional provided tablet pc that makes it easy to make music notations electronically. The current toolset for E-stand music is less than the ambitions offered by Roll-Coll. E-Stand offers basic text annotations and a pen tool without any pre-sets. It also includes a foot pedal attachment to allow for easy page turning. It can be used in live performances and has some emerging collaboration tools. It’s Role-Coll biggest competitor.
5.3 Imagionation Cubed http://www.imaginationcubed.com/ Imaginationcubed.com is a test site for GE’s latest web collaboration tool. It allows for multiple parties to share ideas in a real time whiteboard with others. Tools provided include a basic pen tool, text type tool, preset geometric shapes, and an assortment of stamps. Users can be invited to join via AOL instant messenger or by email. It also has the functionality of replaying or deleting what was drawn based on the real-time process undertaken while using the whiteboard.
5.4 Sibelius http://www.sibelius.com/ Sibelius is a software tool for writing, playing, printing and publishing musical compositions. It can be used by anyone, student and teacher alike, to make their music writing easier. It contains a set of tools to create a composition from scratch and to edit a composition once it has been created. While creating the composition, Sibelius keeps track of the different parts that are being edited and can dynamically update the view to reflect a complete score or a single part. It also includes several collections of sounds for MIDI playback as well as saving to MIDI.
Role-Coll Design Documentation
24 of 29 pages
5.5 Finale https://www.finalemusic.com/ Finale is a line of products that cater towards the music creator. It allows for complete control over music notation and playback. It also supports both the Mac and PC line of computers. Finale supports integration with a wide variety of interfaces in order to make music creation easy. Basic input involves keyboard and mouse entry of each note. Input can also be captured from MIDI input provided by electronic instruments such as keyboard. Recent improvements allow OCR input where previously printed music can be scanned and automatically made into electronic versions with minor editing.
5.6 C# White Board http://www.codeproject.com/dotnet/csharpwhiteboard.asp The link above is a resource that can be used to develop the editing portion of a document in the application. The white board program allows drawings, for example with a pencil tool, and displays it to both people engaged in the session in real time. The code will help us with how to implement that part of the program. The code only handles a session of two users. Role-Coll will modify it and allow multiple users.
5.7 Open-Xchange http://www.open-xchange.com/EN/developer/ Open-Xchange is preexisting open source software that does online collaboration. It has a lot of code for setting up servers to handle different collaboration tasks. Some other features available include: calendars, e-mailing, and more advanced functions like forums and bulletin boards. This is a tool more geared towards project management that might help Role-Coll to get up to par with current available software.
5.8 Babylon Java Chat http://www.visopsys.org/andy/babylon/ The Babylon chat program is a java chat applet that allows conversations between people like other chat programs. The creator of Babylon released some of the code on this site to help developers. It also has a white board program that can help in the implementation of Role-Coll for our real time collaboration. The program also has some client-server code which will help the networking aspect of Role-Cole. It is written in java so it will not be directly ported over. It can be used as a model for the coding process.
5.9 Java USB API http://today.java.net/pub/a/today/2006/07/06/java-and-usb.html?page=2 This article is a reference on how to interface USB devices with a Java application. The article describes some of the basic library functions in the Java USB API. It will be the basis of getting the hardware devices to talk with the software application. Some modifications are required as the hardware devices for Role-Coll are custom devices that may require some tweaks.
Role-Coll Design Documentation
25 of 29 pages
5.10 IR Prox Logic http://www.schursastrophotography.com/robotics/irproxlogic.html The webpage summarized a robotics project that used IR sensors to determine a path for a robot to take. The article will be helpful in learning how IR sensors work and how to implement them in the hardware component. The article also shows state diagrams that may help in programming the logic for the microcontroller.
5.11 8051 Microcontroller FAQ http://www.faqs.org/faqs/microcontroller-faq/8051/ This page will be used as a reference for quick questions about the 8051 microcontrollers. It has things for programming, compiling, and interface hardware with the chip. If there are problems that arise when implementing the hardware, this is a great source to find an answer to the basic questions when troubleshooting.
Role-Coll Design Documentation
26 of 29 pages
6 Glossary of Terms Collaboration To work jointly with others or together especially in an intellectual endeavor
Concurrency The property of systems which consist of computations that execute overlapped in time, and permit the sharing of common resources between those overlapped computations
Database A usually large collection of data organized especially for rapid search and retrieval
Difference The element or factor that separates or distinguishes contrasting situations
Document A computer file containing information input by a computer user and usually created with an application
GUI Graphical User Interface; the front end of the program where users interact with to use the features in the program Role-Coll Role Based Collaboration Software
Key Signature The sharps or flats placed after a clef in music to indicate the key
Menu A list shown on the display of a computer from which a user can select the operation the computer is to perform
Measure A grouping of a specified number of musical beats located between two consecutive vertical lines on a staff
Module Different set of rules, tools, and pictures for a different situation.
Musical Note A written symbol used to indicate duration and pitch of a tone by its shape and position on the staff
Musical Staff The horizontal lines with their spaces on which music is written
Repository A place, room, or container where something is deposited or stored
Role A function or part performed especially in a particular operation or process. The predefined relative relation to other individuals in a system
Tool bar List of tools available to user to use in the program
Time Signature A sign used in music to indicate meter and usually written as a fraction with the bottom number indicating the kind of note used as a unit of time and the top number indicating the number of units in each measure
Use Case A use case is a methodology used in system analysis to identify, clarify, and organize system requirements
Whiteboard A hard smooth white surface used for writing or drawing on with markers
XML A markup language with use and design similar to HTML but employing tags that indicate the logical structure in addition to the display specifications of the coded data
Real Time The actual time during which something takes place
Photodiode - A semiconductor diode that functions as a light detector. Photodiodes are have a r a window or fiber connection, in order to let in the light to the sensitive part of the device.
Universal Serial Bus (USB) - A serial bus standard to interface devices. USB was devised to help replace all serial and parallel ports on PCs, since these were not standardized and required a large number of device drivers to be developed and maintained.
Role-Coll Design Documentation
27 of 29 pages
Electric Current - The flow (movement) of electric charge. The SI unit of electric currents is the ampere (A).
Microcontroller (MCU)- A “computer-on-a-chip.” It is a type of microprocessor emphasizing self-sufficiency and cost-effectiveness, in contrast to a general-purpose microprocessor. Microcontrollers do not have an address bus or a data bus, because they integrate all the RAM and non-volatile memory on the same chip as the CPU. Because they need fewer pins, the chip can be placed in a much smaller, cheaper package.
Firmware - Software that is embedded in a hardware device, it is often provided on flash ROMs or as a binary image file that can be uploaded onto existing hardware by a user.
Intel 8051 – A Harvard architecture single chip microcontroller, which was, developed by Intel in 1980 for use in embedded systems. It was extremely popular in the 1980s and early 1990s, but today it has largely been superseded by a vast range of enhanced devices with 8051.
Role-Coll Design Documentation
28 of 29 pages
7 Design Document Revisions
• Introduction re-written to include more focus on music functionality, hardware additions and patent dispute.
• Revised System Level Design and Class Diagram to reflect the latest software architecture.
• Hardware specifications added to conform to new addition of hardware component. • Engineering Standards added to conform to new addition of hardware components. • All new initial snapshots of user interface and hardware components. • Combined list of references across all versions. • Detailed Design, References, and Glossary were included from previous projects dur to
participation in the Governor’s Cup.
Role-Coll Design Documentation
29 of 29 pages
Contributions of team members
Harold De Armas • Table of contents & Introduction • Database diagram • Design document differences • Contributions of team members
Erik Hanchett • System level design and annotations • Class descriptions
o All of them o Really, there were a lot of them
Raymond Lee • Hardware diagrams • Engineering considerations • Hardware snapshots • Hardware related reference articles
Zack Norcross • Class Diagram • Class Diagram again • User interface screenshots • The bulk of the coding