Lessons / Traning mode

Synthesia is a living project. You can help by sharing your ideas.
Search the forum before posting your idea. :D

No explicit, hateful, or hurtful language. Nothing illegal.
Kasper
Posts: 149

Post by Kasper »

1mm distance will make the difference to Kaspers TRAINING MODE availability or not.
I must say I'm a little bit flattered when reading this "Kaspers training mode thing" :P

Although I don't understand how this training mode thing can be available if loop scores are available. (something to do with that command line stuff I suppose)
Would you than be able to play it in an automated way, or should you write a command line after each " round" ?
English was my worst subject on school, so my language could be a bit awkward sometimes...
TonE
Synthesia Donor
Posts: 1180

Post by TonE »

Kasper wrote:Although I don't understand how this training mode thing can be available if loop scores are available. (something to do with that command line stuff I suppose)
Would you than be able to play it in an automated way, or should you write a command line after each " round" ?
I will write an AutoHotkey script and anyone can use and improve it if they want. You do not need to do anything manually if you follow the instructions, the idea of using AutoHotkey is automating as much as possible, having fun with Synthesia, it feels then actually as being part of Synthesia, even being just an external addon to it.

Based on the information Synthesia can give to the outside world, which is here AutoHotkey via the clipboard, we can use this information for the next decisions.
Kasper
Posts: 149

Post by Kasper »

This sounds great :D

In one month I'm back in Groningen, so I might be able to play training mode by that time (no pressure nicolas)

I would also love to help writing this training sessions/lessons for synthesia users.
English was my worst subject on school, so my language could be a bit awkward sometimes...
Nicholas
Posts: 13135

Post by Nicholas »

I'm kind of torn between Training Mode and Lesson Mode myself.

Otherwise, how were you hoping to get loop scores out of Synthesia? Can AutoHotKey like, scan the clipboard to see whenever it changes? While in a loop do we keep appending to the clipboard in some comma-delimited fashion? So, just after looping for the first time the clipboard might say "1040", the second time "1040,1325", the third "1040,1325,1850", etc.?
TonE
Synthesia Donor
Posts: 1180

Post by TonE »

Nicholas wrote:I'm kind of torn between Training Mode and Lesson Mode myself.
The mass would understand Lesson Mode probably easier what it should do?! I can call it then "Kasper-style playing" in the forum.
Otherwise, how were you hoping to get loop scores out of Synthesia? Can AutoHotKey like, scan the clipboard to see whenever it changes?
Yes, see OnClipboardChange in the AutoHotkey help. Here is the first section there:

Code: Select all

OnClipboardChange
A label named OnClipboardChange (if it exists) is launched automatically whenever any application (even the script itself) has changed the contents of the clipboard. The label also runs once when the script first starts.
While in a loop do we keep appending to the clipboard in some comma-delimited fashion? So, just after looping for the first time the clipboard might say "1040", the second time "1040,1325", the third "1040,1325,1850", etc.?
No, I am using another method, I create for each .mid file in its location directory with the same midi file name + date string + .txt for each day a separate .txt file where I write the information I am interested in after each clipboard update. AutoHotkey knows the midi file name as I start Synthesia anyway via its command line using AutoHotkey. For example is the file name:

Code: Select all

TargetFile = %CurrentMidiFile%.%DateString%.txt which looks then in Explorer like some_song_beautiful.mid.2010-01-28.txt
and its content:

Code: Select all

AbsoluteMinutes,Score,Achievement,Speed,Time
739,4859,60.737500,80,12:19
740,5794,77.253333,75,12:20
740,5686,81.228571,70,12:20
741,5195,79.923077,65,12:21
742,5013,83.550000,60,12:22
743,4684,85.163636,55,12:23
743,4613,92.260000,50,12:23
744,4907,89.218182,55,12:24
745,4456,89.120000,50,12:25
745,4042,89.822222,45,12:25
I am plotting then Achievement and Speed against AbsoluteMinutes. It would be nice of course having even access to the extra time, extra notes, duration performance in percent information, as written in viewtopic.php?f=5&t=1999#p12098 , then I could even plot those over game plays.
Nicholas
Posts: 13135

Post by Nicholas »

That's a pretty robust clipboard event and a neat scheme you've come up with yourself.

So, how would you like the loop scores to be written, and when?
TonE
Synthesia Donor
Posts: 1180

Post by TonE »

Nicholas wrote:So, how would you like the loop scores to be written, and when?
Hmm, how --> as given in my last link above, so no concatenation/appending of all the loop scores, only the last value together with some more information and when --> at the end of each loop segment? I meant this not only for the loop scores but also the whole songs --copy-score command.
Nicholas
Posts: 13135

Post by Nicholas »

If the output for the entire song vs. each loop is identical, how were you planning to tell them apart from one another? Or... doesn't it matter?
TonE
Synthesia Donor
Posts: 1180

Post by TonE »

Nicholas wrote:If the output for the entire song vs. each loop is identical, how were you planning to tell them apart from one another? Or... doesn't it matter?
Well, if I start the song via the command line then I know exactly in which loop segment I am playing currently, thanks to your recent bookmark support via the command line. :) Those values I can add then also into the log files as new columns like: FromBookmark, ToBookmark
Nicholas
Posts: 13135

Post by Nicholas »

Reading through that description of the OnClipboardChanged event again, I'm wondering what would happen in the event that two loop scores in a row were perfectly identical. Would the event fire? Should I do a quick "set the clipboard to an empty string" first before updating it with the actual scores?

I'm curious how it's checking for the clipboard change... if it's polling (even rather quickly), it might miss the change-to-blank part and still skip over a perfectly identical score. Of course, if it has some OS hook where it has asked for a notification every time it changes, it'd probably be safe both ways.
TonE
Synthesia Donor
Posts: 1180

Post by TonE »

Nicholas wrote:I'm wondering what would happen in the event that two loop scores in a row were perfectly identical. Would the event fire?
The quick answer: Yes.

The longer answer: I do not know all those AutoHotkey details, too, I just tried copying twice the same number into the clipboard and it seems both are recognized correctly, even being the same number. We can change this anyway later again, if there should be any problems. ;)
Nicholas
Posts: 13135

Post by Nicholas »

Nice. They must be registering for some change notification then.

That makes it simpler and feel less dirty now that I can keep doing it the "right" way without introducing artificial clipboard-clearing events.
TonE
Synthesia Donor
Posts: 1180

Post by TonE »

Thanks Nicholas.
Nicholas
Posts: 13135

Post by Nicholas »

Alright, they're going to be a little asymmetric for now.

After each loop (this is really all the info I have):
[milliseconds overage],[extra notes]

example: 1295,4
interpretation: +1.295 extra seconds and 4 extra notes

At the end of a song in practice mode:
[score],[milliseconds overage],[extra notes]

So, the first number is the same one you're used to seeing and the last two in the comma separated list are the same as the practice loop stats but overall for the whole song.

Is this getting closer to something you wanted?
TonE
Synthesia Donor
Posts: 1180

Post by TonE »

And the note duration information?
Nicholas
Posts: 13135

Post by Nicholas »

TonE wrote:And the note duration information?
I took a look over at the other topic and I saw the bit about "78 would represent the percentage of best "duration performance"" but I'm still not sure exactly what you mean by that. Could you outline what exactly that's a calculation of?
TonE
Synthesia Donor
Posts: 1180

Post by TonE »

Nicholas wrote:
TonE wrote:And the note duration information?
I took a look over at the other topic and I saw the bit about "78 would represent the percentage of best "duration performance"" but I'm still not sure exactly what you mean by that. Could you outline what exactly that's a calculation of?
Hmm, I am talking of the HoldingScore in practice mode, so the 25% part of the whole practice score. See here:
CHG: Holding notes longer now increases your score! This also works with the
sustain pedal. Impact to practice mode scoring is discussed here:
viewtopic.php?t=1821&p=10949#p10949
So the number 78 would tell, you got 78 percent of all HoldingScore you could get if you would hold all notes for their perfect duration, this is why I called them as "duration performance". Sorry for confusing you.
Nicholas
Posts: 13135

Post by Nicholas »

You're fine... I haven't really been using a uniform nomenclature for a lot of the new stuff. We're still kind of agreeing on terms as a collective. :D

Again, I don't really have many stats available for loops without doing some extra work so those will probably stay just the two values but writing out the total percentage of holdable-time that was held (ha! I just called it something different yet again! ;) ) should be easy for the whole-song clipboard write. I'll add that.
TonE
Synthesia Donor
Posts: 1180

Post by TonE »

Nicholas wrote:... should be easy for the whole-song clipboard write. I'll add that.
Great. For the loops, no problem, today finally I can try the new preview and see how much we can make use of the "loop clipboard information" to decide if the "score" was high enough. I have to experiment there a little. Can not I calculate the "old score S without the recent HoldingScore" myself, if I know already the extra time and extra notes for the loop section? I would only need to get

1. Number of all YouPlay notes in the loop segment ~ TotalNotesPressed.
2. Length of loop segment in milliseconds. ~ SongLength, here LoopLength.

If I do this in a preprocessing step I should be also able to calculate S for the loop segment? If I have my markers anyway in the file already as midi markers, I could do the above steps easily.
Nicholas
Posts: 13135

Post by Nicholas »

That sounds pretty reasonable. I'm going to go ahead and believe that it's possible with info you can pre-compute. Though... it's getting pretty late, so I didn't take the time to think it through. I might take a crack at it in the morning. :D
Post Reply