Software Engineering: Analysis and Design

CSE3308




Program Specifications

0 comments

Song Browser
Users can move songs around the system by clicking and dragging them from the song lists to the buttons which display the other sections of the display. What happens depends on the button.
Recording Studio: Adds the song to 'To Record' list in that window.
Karaoke Box: Adds the song to the queue under your name.

The Karaoke Box Window
This is kept separate from the main window - one window for each open Karaoke box (should this be limited to one or two? Should people be allowed to join more than one box at a time? Bandwidth alone might limit this, but some 'power' users might like to join more than one.) We're saying for now that the user can only join one Karaoke box at a time. Which is displayed in a separate window?
it would be nice to keep it in the one window though. Could the Song chooser be one half (slider bar divided) of the Karaoke Box window, and the other half be the video display and the other box specific stuff itself? Including the all important song queue.
Anyway why am I restricting myself to the desktop metaphor anyway? Familiar controls and user interface are one reason.

Users can click 'view this song in ITMS to purchase the artist's original song if they so wish.

Preferences Menu
Users can edit their profile information in the preferences pane under the 'Profile' tab.


The Karaoke Box view
In this view, when there is no-one singing, everyone's faces are shown in the video window- an aggregation video of everyone's current feeds.


KTV User Interface

0 comments

SingleWindowKTVMockup.jpg
This is a single window version of what KTV might be.

Why not have the Song chooser as some kinf of central screen, and then the other screens whoosh off to the right, left top and bottom for the other sections. This could be wasting already strained cycles.

Here are some preliminary and VERY CRUDE layouts. Well actually the layout is all wrong, but it provides a foundation of what is achievable.
OnlineKaraokeView.jpg
Shows how the main online karaoke view may look. The left hand side shows the song library browser, common to most views, that can wrap all the way into the left.
OnlineKaraokeBoxViewer.jpg
This is kind of what the box chooser would look like. You choose a 'venue' from the left, and then an actual box on the right. From here users can also 'create a new box' and edit its attributes, and then join it. Although the button is hidden, it reads 'join this box'.
StudioView.jpg
Showing where a user is recording to disk (as opposed to live online broadcast) a karaoke song.



Have to examine whether need to have more than one view on screen at any time.

Sovereign Posture:
Will be designed for mostly full screen use - but could be resized to a small extent.

http://www.wormseyefilms.com/quicktimes/kb_sybg.mov
This is an example of the ghastly effects that that this software could have!


Karaoke Boxes: Use Cases

0 comments

<<These must come later on - I have accidentally slipped into the design mode too soon. Let's finish analysing first!>>
Use Cases
Join A Karaoke Room
Choose Karaoke Room to Join
Select the Karaoke Room
Select Join Room

Choosing A Karaoke Room
Display the list of available karaoke rooms in the main window.
Select the room entry from the list and select it.


KTV Functional Specs

0 comments

What the Mac needs is Karaoke. Sure, Garageband is great: for people who can play instruments, but for the rest of us uncultured swine, we need something that anyone can belt out a tune into, with idiot sheets, to the equal disturbance of our neighbours. What with all Macs shipping with a mic and camera these days, it makes for a perfect environment for Karaoke (KTV). This page hosts the Functional Specifications for KTV. So this is what is should do:

Program Description
The software will be a socially networked system which co-ordinates and manages an online karaoke experience through a desktop application. Broadly, it will co-ordinate online karaoke boxes, which users can join and sing their favourite songs in, and will also allow for the recording of karaoke, which can be entered in a potentially global karaoke contest. (Think Karaoke Idol). Ghastly - yes, I know, that's the point.

Functional Specifications
This is a list of features that the software should implement. It is probably dynamic, and will grow and shrink as I think of more cool stuff this beast could do. Implementation complexity to the wind! This is a creative space.

Recording Studio
Use their computer's multimedia capabilities (iSight / microphone) to record AV material as a song.
Participate as a group at one computer ('band' style), all entering their usernames to 'gain credit' for their performances.
Submit their recordings for review and viewing by other users.
Recorded songs can be posted as an entry into the online singing contest, which is rated and voted for by other users.
When there is more than one recording, the user can choose which recording of should be uploaded.


Recorded Video Browser

Be able to view other user's recorded video from a central repository (using google video's service?).
Be able to browse other user's video by ranking, popularity, song, language, country, karaoke-room.
"View other people who sang this song"

Online Karaoke Box
'Join a room' and take turns at singing songs of their choices (from their or their friends' library)
Rate other people's performances after they've given them.
Enable voice communication between performances.
Sing a song by themselves, or with friends, remotely as well as from the same computer.
Add songs to a queue.
Reorder the songs in the queue.
Stop a song you're currently singing.
Fast forward through the boring bits in a song (the instrumental part).

Be able to search for songs to sing via the on screen catalogue, and add it to the 'song queue' for that karaoke room

Box Management

Create an online Karaoke box.
Set the options for that Karaoke Box
Limit the number of users allowed in one box.
Invite users to that karaoke box (from their friend list, or let anyone join)
Request other users to sing a song (song requests)

Karaoke boxes (rooms) can be set to themes that reflect the songs that are sung. These would usually reflect the genre of music.
Rooms can be selective about who can enter a room (Ie, elite singers! Professional etc).
Optionally allow other users to connect to a steaming feed of a karaoke box.

Managing Songs
Be able to drag a song from the song directory into their own library to download it (and have it marked as unsung)

Displaying Lyrics
The lyrics for the song should come up on the screen to sing the song along to (as per karaoke).
When the lyrics are in another language, the translated lyrics can be shown to other listeners as subtitles so that other users know what they are looking at (this will require some centralised lyric database with translations).

Comments and Managing Spam
Comment on other people's recordings / performances.
Manage Comments and other user feedback by flagging inappropriate and therefore for possible deletion.


Managing identities
Register themselves.
Edit their profile
Add custom user generated fields to their profiles


Additional Features

Users who are popular can become 'featured' singers.
Can view all users according to their ranking.
Schedule karaoke-time with their friends.
Add karaoke time to iCal.
Keep a list of their karaoke friends.
Be able to subscribe to other people's recordings.
Subscribe to the 'best-of' and 'worst-of' KTV through a vidcast available via iTunes

Lyric Database

Songs will come from a centralised database of songs which have the lyrics attached and possibly certain themes attached to them.

Use an open user generated Lyric Database.
May need to set the lyric transition timing themselves if they have not already been set.


Audio Controls
Adjust the audio levels

Effects
A library of effects will be available to the user to put on top of the video stream or recording in real time or post recording / Have interactive layers that the user can play with via the iSight.
Be able to theme the colour of the fonts. (through a NNW style theme selector).

Uploading
The audio and video quality can be adjusted to meet bandwidth requirements in the live karaoke, but will be set to a set of standards for the recorded submissions. Use a skype API (if available) for A/V communications. For online storage, outsourcing storage to Youtube or google video might be good.

The system should
Disable networked features when no network is available (The system will facilitate all of the above requirements from within the application whether the computer is connected to the internet or not.)

Possible ideas
If a user finds a video clip online, they could do 'reverse-drag-from-home' by singing in place of the singer in the video, and the Karaoke goes over the top. Could be fun.

//These are the strings that documented the original brain wave //
Wouldn't it be fun to have the whole world in a great big online singing contest!
nettokara!
It could be an online Idol competition hosted through iTunes.
Language specific competitions.
Global Idol kind of thing!
--
Also - I don't pertain that this is by any means an original idea!

So that's basically at a high level what I think the system should do. Sound exciting? You only have to take a casual glance at any of the major video sharing services out there to see that people are already making fools of themselves as it is! We should make it easy and fun for them to do it and at least a bit socially acceptable.


ToDo List: KTV

0 comments

I'm going to go about my exam study by doing some actual software speccing and designing.
Topics to cover (this is also like a list of things to do for the project design)
Analysis
User Interface Design
Requirements Analysis / Specification analysis
Affordances, etc
Design
Object Oriented Design techniques
UML diagrams -
Class Diagrams
Expanded Use Cases
State Diagrams
Interaction Diagrams
Structured Analysis stuff too
DataFlowDiagrams, DataDictioanries, Process Specifications
Will also have to look at the post production stuff too that is important, like testing, documentation, the of SE stuff in the lecture notes I think.
Faults, failures
Metrics


Last posts

Archives

Links