Mathieu Tozer's Dev Blog

Cocoa, the development of Words, and other software projects (including those dang assessment tasks).




Object Gardening

0 comments

As I read Aaron's book, I feel as though my inner visualisation of the Cocoa framworks as described by the myriad of classes, beautifully organised intelligently, in a stunning hierarchy, is developing into something that I will be able to use to create applications. Each new chapter brings new and useful ways of spawning objects from the frameworks.

As I garden the frameworks, I conceptually tie various objects together with messages. I can see them sending little notification objects to the notification centre. And then other objects owning others. Shuffling about at the direction of other objects in their own fantastic ecosystem that I'll call an application.

I'm also finally feeling better about the Objective-C syntax that I now realise I only stumbled though previously. I can look at the code and not see code, but my ecosystem of objects. The code is how I direct what happens.

I'm half way though the book now. I don't pertain that I could go and practically do every example tutorial I've followed all on my own, but I'm learning conceptually what's going on, so when I go to documentation or reference, I know what they're going on about.

So that's something.


Review

0 comments

Time for a quick review of where I'm at.

1. Went to the Apple event yesterday - basically a 'come to WWDC!' but it was good and I met a couple of new people. The guys from plasq were there too.
2. Talked to the plasq guys about KTV, and they seemed to like my idea. Said I would need to get a semi-working version happening to get it noticed. Create some buzz etc.
3. Am about half way through Aaron's book and am feeling more and more confident.
4. Goal clearly is to be proficient with the Cocoa frameworks and tools.


KTV: User Interface

0 comments

The application will be housed in a mostly sovereign single window.
This follows with the idea that the app will be kind of like a game, besides, it's hard to multitask at the best time times let alone when you're singing karaoke.

Box Chooser
boxChooser.jpg
To find a box, choose from the list on the left hand side of this subview. This list might contain groupings by genre, language, groups, or 'venue'. But most probably genre. Within each selection there can be 0...* many karaoke boxes. Users can create boxes from here, and join existing boxes. When choosing a box, the details of the current selection is shown below the table as shown. Clicking join will add the box to the tab view and select it 'taking' you to the box.
The details tab contains information such as who is in the box, the average rating and individual ratings of the users in the box, the song line up etc.

Studio
studio.jpg
The user can drag a song from the song chooser on the left to the right hand side to set up the studio for that song. Layers and audio controls are below, and can be added live (by a friend) or set to automatic. Can stop the recording mid way with the stop button. Once the recording is finalised, clicking 'save song' will flatten it for video and put it in the Record Browser from which you can upload the recording for everyone to view or as your entry into the Idol contest.

Recording Browser
SongBrowser.jpg
In the recording browser, the table shows the recordings that the user has taken of themselves singing the currently selected recording(s) in the song selector on the left.

From the top table, the user can browse their own recordings and choose the recording to post.
A user can only have one song 'live' (online) of a recording, but they can change it if they feel they have song a better rendition of the song. This is where they can manage this.
The middle view shows the comments and ratings that the currently selected video has received by other users.
Other people's recordings are stored remotely and are streamed with a lower quality or downloaded to the users computer at a higher quality.

The user can view a video in a detached window also, which can be expanded to full screen, or use the partial sizes. Hot keys are command 1, 2, 3, 4 and 0, as per the standard.

Clicking on buy in iTunes opens the currently selected song for purchase (sung by the real artist!) in iTunes.

From within the table view, the user can click to download another user's karaoke version of the song. The download progress is indicated in the table view.

Rating videos.
The offensive flag is used by the system to monitor possibly offensive recordings that need to be reviewed for appropriateness.

There might also be a future web version of this interface for viewing and rating other people's karaoke.

Still to come!
Online Karaoke View
The currently open Karaoke box is shown in the tab on the right of the tab view. In the mockup, the box name is 'JPop Box'.
Idol View


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.


+RSS | dev blog | Portfolio

About me

My status

Last posts

  • my del.icio.us
  • my flickr