Let's talk about VirtualDJ's resilience to expected conditions.
Here's my setup - VirtualDJ v7.0.5b, Windows 7 x64, 2 x Pioneer CDJ-400's and a Pioneer DJM-700. I am using the Pioneer CDJ-400's as both MIDI controllers and soundcards. VirtualDJ's audio output is set for 2 cards - 1 for each controller.
I've been trying some experimentation to help prepare myself for future gigs. The main thing is - how best to handle a handover to a 2nd DJ on my setup?
Whichever way you look at it, at some point the CDJ-400 USB cable is going to have to be unplugged while VirtualDJ is still playing. In short, it was simply impossible to do that without VirtualDJ either stuttering on the playback, or stopping playback altogether.
Here were my findings:
1. If I am playing off 1 deck, and I have stopped playback on the other, I should be able to safely unplug the non-playing deck, correct? However, doing so caused music playback through the remaining channel to stutter and/or stop altogether.
Why?
2. Plugging the USB cable back in again does not restore playback. If I go into the audio configuration, I can see that VirtualDJ has redetected the soundcard on the correct channel. However, it will not restore playback until I click 'Apply'.
Why?
3. After plugging the USB cable back in, the controller-deck allocation is messed up. My left controller (which was previously assigned to deck 1) is now assigned to deck 2. And what's this? the right controller is also assigned to deck 2! I have to manually go into the Mappers tab and manually assign the controllers to the correct deck.
Why?
4. Further unplugging and re-plugging reveals that controller-deck assignment is totally random. Sometimes VirtualDJ will assign the controllers to the correct decks. Sometimes it will swap them around. The rest of the time it sets both controllers to the same deck.
Why?
I would say that resilience and reliability are *the* most important factor when you are playing out to a crowd. No matter which you want to spin it, if anything short of a critical hardware failure causes the music to stop playback, even for a second, then you have failed.
I believe that VirtualDJ can be made (and actually should) handle all the scenarios I have listed above. But it doesn't.
What are your thoughts?
Here's my setup - VirtualDJ v7.0.5b, Windows 7 x64, 2 x Pioneer CDJ-400's and a Pioneer DJM-700. I am using the Pioneer CDJ-400's as both MIDI controllers and soundcards. VirtualDJ's audio output is set for 2 cards - 1 for each controller.
I've been trying some experimentation to help prepare myself for future gigs. The main thing is - how best to handle a handover to a 2nd DJ on my setup?
Whichever way you look at it, at some point the CDJ-400 USB cable is going to have to be unplugged while VirtualDJ is still playing. In short, it was simply impossible to do that without VirtualDJ either stuttering on the playback, or stopping playback altogether.
Here were my findings:
1. If I am playing off 1 deck, and I have stopped playback on the other, I should be able to safely unplug the non-playing deck, correct? However, doing so caused music playback through the remaining channel to stutter and/or stop altogether.
Why?
2. Plugging the USB cable back in again does not restore playback. If I go into the audio configuration, I can see that VirtualDJ has redetected the soundcard on the correct channel. However, it will not restore playback until I click 'Apply'.
Why?
3. After plugging the USB cable back in, the controller-deck allocation is messed up. My left controller (which was previously assigned to deck 1) is now assigned to deck 2. And what's this? the right controller is also assigned to deck 2! I have to manually go into the Mappers tab and manually assign the controllers to the correct deck.
Why?
4. Further unplugging and re-plugging reveals that controller-deck assignment is totally random. Sometimes VirtualDJ will assign the controllers to the correct decks. Sometimes it will swap them around. The rest of the time it sets both controllers to the same deck.
Why?
I would say that resilience and reliability are *the* most important factor when you are playing out to a crowd. No matter which you want to spin it, if anything short of a critical hardware failure causes the music to stop playback, even for a second, then you have failed.
I believe that VirtualDJ can be made (and actually should) handle all the scenarios I have listed above. But it doesn't.
What are your thoughts?
发表时间 Thu 09 Aug 12 @ 5:07 pm
My thoughts are that it's nothing to do with VDJ.
If you're using USB connections for control and audio......you mess with them while the software is live, it'll have an effect. On any software.
If you're using USB connections for control and audio......you mess with them while the software is live, it'll have an effect. On any software.
发表时间 Thu 09 Aug 12 @ 5:27 pm
groovindj wrote :
My thoughts are that it's nothing to do with VDJ.
If you're using USB connections for control and audio......you mess with them while the software is live, it'll have an effect. On any software.
If you're using USB connections for control and audio......you mess with them while the software is live, it'll have an effect. On any software.
Even if the deck you are unplugging is not actually playing anything at the time?
As a developer, if this happened to me and I wanted to ensure the application continued running, I would develop the following safeguards:
1. Do not continue to route sound output to an soundcard if there is nothing playing on that channel. That way, if communication to that soundcard is lost, it will not affect the overall program operation.
2. If soundcard connectivity is lost, do not stop playback. Instead, route playback to a 'dummy' soundcard (even if it's just the laptop's internal soundcard), but continue playback of the music and begin attempting to restore connectivity. If connectivity is restored, reroute sound back to that output.
3. The same for Controller connectivity. If controller communication is lost, switch to keyboard until controller connectivity is restored. Manual intervention should only be required to *stop* automatic restoration of the previous configuration.
Attempts to restore connectivity should be given high priority, but not so high as to interrupt music playback.
Windows is designed to handle live disconnecting of USB devices. VirtualDJ should be able to work on top of this, and handle it correctly. After all, you don't see Windows locking up altogether every time you unplug a flash drive. Why? Because it's been designed to be robust when this does happen.
发表时间 Thu 09 Aug 12 @ 5:37 pm
Quote :
1. If I am playing off 1 deck, and I have stopped playback on the other, I should be able to safely unplug the non-playing deck, correct? However, doing so caused music playback through the remaining channel to stutter and/or stop altogether.
Why?
Why?
Well for a start the two audio streams have to be synchronised - they are separate devices after all. Also when you unplug a device (leaving one connected) we do not know what happens to the device driver - perhaps it has to reset and purge it's buffers? Potentially that is out of our control - possibly even processed during a DPC affecting real time audio even more.
djnanite wrote :
2. Plugging the USB cable back in again does not restore playback. If I go into the audio configuration, I can see that VirtualDJ has redetected the soundcard on the correct channel. However, it will not restore playback until I click 'Apply'.
Why?
Why?
This was explained in the other thread you started on exactly the same thing:
http://www.virtualdj.com/forums/167077/PC_Version_Technical_Support/VirtualDJ_stopped_playback_halfway_through_a_set.html
Quote :
3. After plugging the USB cable back in, the controller-deck allocation is messed up. My left controller (which was previously assigned to deck 1) is now assigned to deck 2. And what's this? the right controller is also assigned to deck 2! I have to manually go into the Mappers tab and manually assign the controllers to the correct deck.
Why?
4. Further unplugging and re-plugging reveals that controller-deck assignment is totally random. Sometimes VirtualDJ will assign the controllers to the correct decks. Sometimes it will swap them around. The rest of the time it sets both controllers to the same deck.
Why?
Why?
4. Further unplugging and re-plugging reveals that controller-deck assignment is totally random. Sometimes VirtualDJ will assign the controllers to the correct decks. Sometimes it will swap them around. The rest of the time it sets both controllers to the same deck.
Why?
I can't answer those, but I doubt it's random - there will be a pattern I'm sure.
Quote :
I would say that resilience and reliability are *the* most important factor when you are playing out to a crowd. No matter which you want to spin it, if anything short of a critical hardware failure causes the music to stop playback, even for a second, then you have failed.
I believe that VirtualDJ can be made (and actually should) handle all the scenarios I have listed above. But it doesn't.
What are your thoughts?
I believe that VirtualDJ can be made (and actually should) handle all the scenarios I have listed above. But it doesn't.
What are your thoughts?
This is going to come across as sarcastic, but my honest thoughts are don't unplug things ;) Transition to another DJ the old fashioned way - play a CD in your CDJ, disconnect from your laptop, connect to new DJs laptop. Job jobbed.
I also believe your thread title to be incorrect - Virtual DJ is extremely robust - no crash even you unplugged the active audio device and able to resume audio streaming without restarting the application!
Quote :
Even if the deck you are unplugging is not actually playing anything at the time?
You don't think the audio device is closed every time you stop playing audio do you?
Quote :
1. Do not continue to route sound output to an soundcard if there is nothing playing on that channel. That way, if communication to that soundcard is lost, it will not affect the overall program operation.
Addressed above - there is overhead in opening/closing a soundcard channel. In some cases that may mean a reinitialisation of the connection to the driver, which means all audio lost.
Quote :
2. If soundcard connectivity is lost, do not stop playback. Instead, route playback to a 'dummy' soundcard (even if it's just the laptop's internal soundcard), but continue playback of the music and begin attempting to restore connectivity. If connectivity is restored, reroute sound back to that output.
Discussed in the other thread you started on the same subject.
Quote :
3. The same for Controller connectivity. If controller communication is lost, switch to keyboard until controller connectivity is restored. Manual intervention should only be required to *stop* automatic restoration of the previous configuration.
You don't 'fall back' to the keyboard. If a MIDI device disappears you simply can't use it any more. You don't need to 'fall back' to anything, all other devices will function still.
Quote :
Windows is designed to handle live disconnecting of USB devices. VirtualDJ should be able to work on top of this, and handle it correctly. After all, you don't see Windows locking up altogether every time you unplug a flash drive. Why? Because it's been designed to be robust when this does happen.
If you unplug that flash drive whilst copying a file to it, then plug it back in 2 minutes later does the file transfer resume or do you have to restart it manually?
Is a file transfer a time-sensitive, latency-critical, DPC intensive operation?
I can't say I've seen VDJ lock up when a device is removed either?
发表时间 Thu 09 Aug 12 @ 8:33 pm
Have a look here - even other softwares need to be creative with their DJ transitions.
[youtube]J6coBbi737s&feature=plcp[/youtube]
[youtube]J6coBbi737s&feature=plcp[/youtube]
发表时间 Fri 10 Aug 12 @ 10:35 am
Sorry to say, but no audio production software I've used (Ableton, Cubase, Logic) in my experience has ever been able to resume playback if you disconnect the primary sound card.
If that card comes unplugged, you have separated a vital link that keeps the audio data stream synchronized. The software's only option is a restart.
I'm not saying it wouldn't be nice if this were possible, it's just not the current state of audio software.
If that card comes unplugged, you have separated a vital link that keeps the audio data stream synchronized. The software's only option is a restart.
I'm not saying it wouldn't be nice if this were possible, it's just not the current state of audio software.
发表时间 Sun 12 Aug 12 @ 7:13 pm
if the soundcard becomes disconnected you just need to reconnect it and hit "apply" in the sound config... No need to restart the program.
发表时间 Mon 13 Aug 12 @ 5:53 am
Thanks for all your replies everyone, and apologies for the delay in responding.
A lot to respond to here:
OK. So how about providing a 'Disconnect' button next to the soundcard that will safely (and smoothly) disconnect the soundcard without interrupting playback, so that the soundcard can then be safely unplugged without affecting program operation?
Then could you give us the ability to assign this button to a shortcut key so we don't have to fiddle with the mouse and UI when this happens? Assuming the program doesn't need to be restarted, then this could mean the difference of having music playback stopped for a split second, and a few seconds (an eternity when playing out to a crowd).
I've tried it for months and have yet to find a pattern. As an employee of Atomix, I imagine you have a better insight into how Virtual DJ detects and allocates MIDI controllers. Can you give me some insight into it? Does each MIDI controller have a unique identifier when it is plugged in? Is Virtual DJ supposed to remember that identifier? Is it supposed to remember the deck allocation for each controller?
The problems surrounding this could be reduced if I could assign a shortcut key to force the controllers to be assigned to their correct sides, but as we discussed here:
http://www.virtualdj.com/forums/164813/PC_Version_Technical_Support/Custom_MIDI_Keymap_Question.html?search=assign_controller&page=1
the 'assign_controller' command doesn't work.
:-(
That's easier said than done. Sometimes a cable will be unplugged either accidentally or intentionally.
If it is accidental, I want to ensure I have the fastest means to recover from it.
If it is intentional, I want to have the means to unplug cables safely and eliminate (or at least minimize) playback problems. I think this should be possible given that Windows allows you 'Safely eject hardware' from USB. There must be an API option that you can hook into?
Fair enough, but the audience don't see that. They just hear the music stop and/or stutter. What's the difference to them?
As mentioned above - how about giving us the option of 'Disconnecting' the soundcard so that all audio syncs and software hooks can be released? That way we can *choose* when to execute this overhead.
Again, fair enough. But I don't think this is an insurmountable problem, as described above.
You may disagree with this, but I wouldn't generally consider those programs to be designed for a 'Live' environment. Typically they are designed as production packages, so you do all your recording and mixing in advance.
Yes, they *can* be used for Live performances, but it is not their primary function.
Virtual DJ is sold solely as a live performance application, and so is designed to be robust enough to be able to handle certain unexpected conditions.
And that's the million dollar question here. Is it possible for the software to better handle disconnecting of 1 soundcard if at least 1 other soundcard remains connected?
See my response above. Give us an option to assign this to a shortcut key to minimize disruption.
On a closing note, I want to say that Virtual DJ does a lot of things very well. I *still* prefer it to Serato. I think there are areas where it can be made even better, and I hope that others agree.
Every software can be improved in some way or another, and I appreciate that there is only a finite number of developers and time available. I just hope that this thread can be seen not as an opportunity to bash Virtual DJ and it's developers, but as an opportunity to make a truly world class product.
A lot to respond to here:
SBDJ wrote :
Well for a start the two audio streams have to be synchronised - they are separate devices after all. Also when you unplug a device (leaving one connected) we do not know what happens to the device driver - perhaps it has to reset and purge it's buffers? Potentially that is out of our control - possibly even processed during a DPC affecting real time audio even more.
OK. So how about providing a 'Disconnect' button next to the soundcard that will safely (and smoothly) disconnect the soundcard without interrupting playback, so that the soundcard can then be safely unplugged without affecting program operation?
SBDJ wrote :
This was explained in the other thread you started on exactly the same thing:
http://www.virtualdj.com/forums/167077/PC_Version_Technical_Support/VirtualDJ_stopped_playback_halfway_through_a_set.html
djnanite wrote :
2. Plugging the USB cable back in again does not restore playback. If I go into the audio configuration, I can see that VirtualDJ has redetected the soundcard on the correct channel. However, it will not restore playback until I click 'Apply'.
This was explained in the other thread you started on exactly the same thing:
http://www.virtualdj.com/forums/167077/PC_Version_Technical_Support/VirtualDJ_stopped_playback_halfway_through_a_set.html
Then could you give us the ability to assign this button to a shortcut key so we don't have to fiddle with the mouse and UI when this happens? Assuming the program doesn't need to be restarted, then this could mean the difference of having music playback stopped for a split second, and a few seconds (an eternity when playing out to a crowd).
SBDJ wrote :
I can't answer those, but I doubt it's random - there will be a pattern I'm sure.
djnanite wrote :
3. After plugging the USB cable back in, the controller-deck allocation is messed up. My left controller (which was previously assigned to deck 1) is now assigned to deck 2. And what's this? the right controller is also assigned to deck 2! I have to manually go into the Mappers tab and manually assign the controllers to the correct deck.
Why?
4. Further unplugging and re-plugging reveals that controller-deck assignment is totally random. Sometimes VirtualDJ will assign the controllers to the correct decks. Sometimes it will swap them around. The rest of the time it sets both controllers to the same deck.
Why?
Why?
4. Further unplugging and re-plugging reveals that controller-deck assignment is totally random. Sometimes VirtualDJ will assign the controllers to the correct decks. Sometimes it will swap them around. The rest of the time it sets both controllers to the same deck.
Why?
I can't answer those, but I doubt it's random - there will be a pattern I'm sure.
I've tried it for months and have yet to find a pattern. As an employee of Atomix, I imagine you have a better insight into how Virtual DJ detects and allocates MIDI controllers. Can you give me some insight into it? Does each MIDI controller have a unique identifier when it is plugged in? Is Virtual DJ supposed to remember that identifier? Is it supposed to remember the deck allocation for each controller?
The problems surrounding this could be reduced if I could assign a shortcut key to force the controllers to be assigned to their correct sides, but as we discussed here:
http://www.virtualdj.com/forums/164813/PC_Version_Technical_Support/Custom_MIDI_Keymap_Question.html?search=assign_controller&page=1
the 'assign_controller' command doesn't work.
:-(
SBDJ wrote :
This is going to come across as sarcastic, but my honest thoughts are don't unplug things ;) Transition to another DJ the old fashioned way - play a CD in your CDJ, disconnect from your laptop, connect to new DJs laptop. Job jobbed.
That's easier said than done. Sometimes a cable will be unplugged either accidentally or intentionally.
If it is accidental, I want to ensure I have the fastest means to recover from it.
If it is intentional, I want to have the means to unplug cables safely and eliminate (or at least minimize) playback problems. I think this should be possible given that Windows allows you 'Safely eject hardware' from USB. There must be an API option that you can hook into?
SBDJ wrote :
I also believe your thread title to be incorrect - Virtual DJ is extremely robust - no crash even you unplugged the active audio device and able to resume audio streaming without restarting the application!
SBDJ wrote :
I can't say I've seen VDJ lock up when a device is removed either?
Fair enough, but the audience don't see that. They just hear the music stop and/or stutter. What's the difference to them?
SBDJ wrote :
You don't think the audio device is closed every time you stop playing audio do you?
SBDJ wrote :
Addressed above - there is overhead in opening/closing a soundcard channel. In some cases that may mean a reinitialisation of the connection to the driver, which means all audio lost.
As mentioned above - how about giving us the option of 'Disconnecting' the soundcard so that all audio syncs and software hooks can be released? That way we can *choose* when to execute this overhead.
SBDJ wrote :
If you unplug that flash drive whilst copying a file to it, then plug it back in 2 minutes later does the file transfer resume or do you have to restart it manually?
Is a file transfer a time-sensitive, latency-critical, DPC intensive operation?
Is a file transfer a time-sensitive, latency-critical, DPC intensive operation?
Again, fair enough. But I don't think this is an insurmountable problem, as described above.
schmidi_0 wrote :
Sorry to say, but no audio production software I've used (Ableton, Cubase, Logic) in my experience has ever been able to resume playback if you disconnect the primary sound card.
You may disagree with this, but I wouldn't generally consider those programs to be designed for a 'Live' environment. Typically they are designed as production packages, so you do all your recording and mixing in advance.
Yes, they *can* be used for Live performances, but it is not their primary function.
Virtual DJ is sold solely as a live performance application, and so is designed to be robust enough to be able to handle certain unexpected conditions.
schmidi_0 wrote :
If that card comes unplugged, you have separated a vital link that keeps the audio data stream synchronized. The software's only option is a restart.
I'm not saying it wouldn't be nice if this were possible, it's just not the current state of audio software.
I'm not saying it wouldn't be nice if this were possible, it's just not the current state of audio software.
And that's the million dollar question here. Is it possible for the software to better handle disconnecting of 1 soundcard if at least 1 other soundcard remains connected?
synthet1c wrote :
if the soundcard becomes disconnected you just need to reconnect it and hit "apply" in the sound config... No need to restart the program.
See my response above. Give us an option to assign this to a shortcut key to minimize disruption.
On a closing note, I want to say that Virtual DJ does a lot of things very well. I *still* prefer it to Serato. I think there are areas where it can be made even better, and I hope that others agree.
Every software can be improved in some way or another, and I appreciate that there is only a finite number of developers and time available. I just hope that this thread can be seen not as an opportunity to bash Virtual DJ and it's developers, but as an opportunity to make a truly world class product.
发表时间 Mon 13 Aug 12 @ 4:00 pm
djnanite wrote :
I wouldn't generally consider those programs to be designed for a 'Live' environment.
it is not their primary function.
I wouldn't generally consider those programs to be designed for a 'Live' environment.
it is not their primary function.
Really? Do you know why Ableton Live is called Live? I'll give you three guesses!
IMO if you're out working as a professional DJ and using computer software then you really ought to have a (non computer based) backup in place in case anything happens to the computer - caused by you or not.
If you don't like the way computers and their operating systems deal with USB connections, then use dedicated hardware to DJ!
发表时间 Tue 14 Aug 12 @ 4:07 am
groovindj wrote :
Really? Do you know why Ableton Live is called Live? I'll give you three guesses!
djnanite wrote :
I wouldn't generally consider those programs to be designed for a 'Live' environment.
it is not their primary function.
I wouldn't generally consider those programs to be designed for a 'Live' environment.
it is not their primary function.
Really? Do you know why Ableton Live is called Live? I'll give you three guesses!
Whatever. The point of this thread was to highlight 2 issues:
1. Virtual DJ can't handle disconnecting a soundcard, even when the soundcard is not in use. Everyone says it's impossible, but Rane's SL4 does allow for this scenario in Serato.
2. Virtual DJ seems unable to keep track of which MIDI controllers are connected and assigned.
groovindj wrote :
IMO if you're out working as a professional DJ and using computer software then you really ought to have a (non computer based) backup in place in case anything happens to the computer - caused by you or not.
And I usually do for unexpected circumstances. It's *expected* circumstances I'm talking about here. Like when I *expect* another DJ wants to use one of my controllers/soundcards.
groovindj wrote :
If you don't like the way computers and their operating systems deal with USB connections, then use dedicated hardware to DJ!
That sounds very defeatist.
If it is possible to handle disconnections gracefully, then to further promote the benefits of the product (and speaking as a software developer myself) I would investigate the possibility of doing this.
If it really is totally impossible, then I would like to see someone from Atomix say so, because otherwise it's just conjecture.
But if it is not impossible, and it's just something that's been thrown into the "too hard" basket, shouldn't we (as paying customers and as professionals) aspire for something better?
发表时间 Tue 14 Aug 12 @ 5:57 am
djnanite wrote :
Rane's SL4 does allow for this scenario in Serato.
So use Scratch Live (as I suggested in your other thread)!
It won't cost you anything (you say the box is in place) and it'll solve the problem.
Your particular scenario of another DJ wanting to use your CDJs on his computer is not IMO a very common one.
As I also suggested, it can quite easily be done if you simply play from another source while changing over.
You're creating obstacles for yourself!
发表时间 Tue 14 Aug 12 @ 6:11 am
Without reading that whole crazy post, on my NS7 will continue playing if for example the power gets disconnected and reconnected or if the USB cable gets yanked. I do have to scan for midi hardware so my buttons start working. Once the power goes off and laptop is on battery, people still "Boo!", so I say it's not a virtualdj issue. It's the hardware related drivers of it lets recover. My understanding is that was part of the rules written for the hardware manufactures(rane/numark) to work with Serato.
But even after all of this it's still not foolproof.
-David
But even after all of this it's still not foolproof.
-David
发表时间 Tue 14 Aug 12 @ 6:08 pm
this like many topics about the reliability and robustness of the program do make me bite my tongue, i have to hold back and refrain from adding my comments....but.....
I used to work as a dj about 13 years ago, before programs like VDJ were about, good old fashined decks and mixer.
Even then i always had a back up audio source in case of problems ( in those days it was a cd player on repeat the output split and fed into ch3 on my mixer and also directly to the power amp, via a little box a built myself)
I could swap a stylus , or even power down the mixer , and still keep the music going.
I used two mosfet power amps one for each channel, so if an amp failed (or thermal trip) you at least kept the musit going.
now that was my old setup and this is my point, if you are live gig and its your reputation you should always have a backup plan in place!
I use VDJ at home and do the odd gig , I have still purchased the full pro version, at the same time i purchased a modest spec laptop, and VDJ runs just great.
even now when i do a live gig i still take out a backup music player !, its a cheap KAM twin MP3 (KHD2000) about £120
seriously , if your getting paid , or its your reputation, or you know your going to be in the situation were you need to hand over to another DJ, you need a backup plan, dont expect the software to be able to get you out of every situation .
I will shut up now.....
I used to work as a dj about 13 years ago, before programs like VDJ were about, good old fashined decks and mixer.
Even then i always had a back up audio source in case of problems ( in those days it was a cd player on repeat the output split and fed into ch3 on my mixer and also directly to the power amp, via a little box a built myself)
I could swap a stylus , or even power down the mixer , and still keep the music going.
I used two mosfet power amps one for each channel, so if an amp failed (or thermal trip) you at least kept the musit going.
now that was my old setup and this is my point, if you are live gig and its your reputation you should always have a backup plan in place!
I use VDJ at home and do the odd gig , I have still purchased the full pro version, at the same time i purchased a modest spec laptop, and VDJ runs just great.
even now when i do a live gig i still take out a backup music player !, its a cheap KAM twin MP3 (KHD2000) about £120
seriously , if your getting paid , or its your reputation, or you know your going to be in the situation were you need to hand over to another DJ, you need a backup plan, dont expect the software to be able to get you out of every situation .
I will shut up now.....
发表时间 Tue 04 Sep 12 @ 9:36 am