sightreading.training
sightreading.training copied to clipboard
Modifications, enhancements and thoughts
I'm using this tool since March 2019 and I've not seen any action or reaction from the author ever since. I honestly hope he is well and simply busy with other projects.
I always wanted to contribute to this project. I am an experienced programmer and get along quite well with javaScript, css and HTML5 but am new to REACT and don't know moon script which this application seems to be based on. This project, being quite complex and not documented at all, makes it very tedious to get a hold on if the language appears somewhat cryptic to you as well. Since nothing seemed to happen here, I had my thoughts but actually did not do much.
I'm using this tool almost everyday, but my progress is small. As the statistics do not work, I started to note them on a piece of paper in order to have at least some documentation for me in order to see the "slowly but steady" (or sometimes not steady) progress I'm making. After I had several pieces of paper full of notes, I started to write my own "statistics program" in order to get this in a better format, but then thought "stop".....
I've now set up a personal server that tries to mimic the behavior of the original server and started to modify the large main.js in order to get the statistics working for me. That was very tedious, but it's working fine now. Actually I wanted more and finally completely modified the way the statistics work. And as I was at it, I also added some new features:
- the last five streak values (above 15 hits) are being kept in a buffer and remain visible
- the maximum streak is always held and displayed
- the current timing is displayed as well (average hit time)
- the original statistics function was sending hits and misses of the last five seconds every five seconds. I'm now transfering hits, misses, start-time stop time, max streak and average hit time and I'm doing this only when a break of at least five seconds appears.
- I am using a "Surface pro" and it was always a pain to set the scroll speed. Almost impossible to do this with the touch screen, hard even with the mouse, best with mouse and keyboard which I then had to attach. Therefore I've now added a tree-state-button and two + and - buttons which now allow for easy adjustment even with the touch screen.
- the minimum scroll speed can now be 10 bpm
- after a long day of searching and hacking, I've finally managed to get the flats working for midi input as well as the on screen keyboard. (the screen shot shows the first attempt after the fix). The problem was easy to detect, but finding the proper method to fix it without breaking the rest of the application was the trick. A# and Bb are actually the same key physicly as well as for the midi message. Everything would be easy if the application simply dealt with the value the way it comes from the device. However the application - probably for good reason - tries to give each note its name. It does that for the generated notes but not properly for the incomming notes. These all become sharps. I've now created a new function that uses the selected keySignature to set the proper names. That seems to work flawlessly.
I can post more details in the next days if any one is interested.
Regards
Frank
The scroll speed UI and using the key signature to disambiguate sharp vs. flat on input seem like good improvements. Maybe open a pull request and see if leafo has time to take a look?
I wrote a note in March, that I would like to contribute, but don't know how to set up the development environment in order to be compatible, but got no response to that. Also there is no reaction to other pull requests. I'm not sure if leafo is even listening to this.
That's why I finally started to work on the resulting js directly.
Everything is highly event driven and encapsulated which is a good thing in general but painful if You have no support from someone who knows what is going on where, why and when. It's around 20500 lines of code and tiny changes sometimes take me forever.
Due to the "moon script", the code I'm working on sometimes differs from the sources, but I'll post the changes here so that someone with a working environment or leafo himself could easily apply them.
In the meantime I could make my server available to others if the interest is exists. I'd probably have make the "Register" function work for that, but that should be doable.
Regards
Frank
Today I tried the Jazz--Plugin for Firefox and got it working. See #72
Forgive my ignorance - I don't know anything about programing. But is there a way to use your version that has fixed the flat keys? I'd love to keep training with all the different key signatures - thanks for your help!!
Good Morning, I have neither influence on the programs here nor the live server, but I could make my server available for You as well and You could then train with my version until changes are available here as well.
I've just finished the Login and session handling stuff. So that should work. I have not yet implemented the "Register" function, but if You'd send me an e-mail with desired Username and Password (doesn't have to be that fancy), I could set up the account by hand.
regards
Frank
Note shaking in Firefox was much too strong. The css animation is based on the percentage of the width of the DIV which is set to a hight of 20% of the svg's original size. In Chrome this also sets the width accordingly. In Firefox the width of the div remains unchanged and 14% of 400something is quite a bit of shaking :-). Easy fix was to set the width as well. Also reduced the animation time from 0.5s to 0.2s which to me seems to be good enough.
Next point on my list is a bit more challenging. Not sure, if I'll find the right handle to grab onto it. With more than one note (e.gl. grand with two hands) in scroll mode sometimes the "next" note does a bit of shaking on a successful hit. I'm not sure though, if this results from poor timing of the hands hitting or releasing not at the exaxt same time or if it simply is a disruption of the animation
Your improvements look very valuable, @ddTech . Can you attach a diff of your changes, so we can have look ? To get this merged, I guess splitting the changes into various PRs would be good. But as you mention, there seems to be limited activity for merging or reacting to PRs (although there is only one PR as of now). I guess the original author is busy, but I assume some specific PRs would have a greater change of a reaction, than a general issue without code / PRs.
I found this issue when looking at why the "stats" does not work. I would really like stats to work. The application as such is really great, simple and to the point.
Regards Alf
Hi Alf,
Your improvements look very valuable, @ddTech . Can you attach a diff of your changes, so we can have look ?
No, unfortunately not. The changes are spread among the 20500 lines of code I have to struggle with. They are all commented well and standardized so that they can be easily identified if someone needs them or life returns to this repo, but I can't easily create a diff for someone to have a look at it.
I can give You access to my server though, if You like to use my version.
To get this merged, I guess splitting the changes into various PRs would be good.
I'd love to, if I knew how to set up the necessary environment I asked in March last year, but got no response. The way I'm doing it now is a PITA. I'm not even sure if the repo is complete and correct as most references point to ST/ which seems to be STATIC/ here. But that might be due to my lack of knowledge about REACT, or Moon or LUA, which all seems to be used here, making it so difficult for externals to participate. Nothing being commented does not make it easier.
Lately I spent a full day trying to collect and report more of the settings, but so far failed, as they are held only temporarily and not in a global application object. Most of the settings are just passed between the staff and the settings panel and the settings panel gets destroyed once closed. If You go to "stats" and back to "staff" all of Your settings are gone.
I am really tempted to do a rewrite in good old javascript, which I am more familiar with and would probably give more people the chance to contribute. But that would be a lot of work. I don't want to discredit leafo's work. To me this is a valuable tool I am usining on a regular basis. And he surely brought in a lot of time, knowledge and effort to bring it to that point.
But as you mention, there seems to be limited activity for merging or reacting to PRs (although there is only one PR as of now). I guess the original author is busy, but I assume some specific PRs would have a greater change of a reaction, than a general issue without code / PRs.
I am using this tool almost a year now. I think, I found in March 2019. First time leafo was active was in November or December. He added the "donate" button and mentioned that he had fixed the issue with the flats, which were not working and that he would update the live server the next days, All the "flats not working" issues were closed ... flats are not working to date (2020-03-04), I just checked.
I can only speak for myself but for me motivation to do a project like this is either the need for myself or seing other people successfully using it. People come her higly motivated with lots of energy and demand but in the end the ones I have granted access to my server used it no more than just a few days, then obviously gave up. This truely is a motivation killer and probably the reason for leafo to stop being actively involved here.
I myself expected a much quicker progress - hey, it's only 12 notes, how hard can it be - but in reality it is a tough and tedious trail. Maybe I am not gifted at all, but in my case progress is sooo slow that more than once I almost threw that damn thing out of the window. But then I calm down and try again and the next day and the day after that day... and suddenly I've spent a full year with (just) the major C-scale, two hands, two notes at a time, 1000 notes per session on average a bit more than half an hour per day. I started at a scroll speed of 50 with an error quote of around 8% and an aht (average hit time) that is not worth mentioning. Lots of cognitive action, nervously looking up and down, trying to find the right key, sweating. Now I use a scroll speed of 70, sometimes 75, my fingers start to "know" where they have to go, I my eyes rest on the sheet most of the time and I am not filled up with adrenalin to the neck while I'm playing. Missed hits are down to 3 - 4%. I have good days and bad days. Not as much progress as I was expecting, but much more than I had without that training. Still a long and tedious trail, but I'm heading in the right direction.
Regards
Frank
I finally managed to access the current settings from within the noteStats instance. In the end it took only three lines of code but days of analysis and research to get me there. This is an important step, as I now can send and save these settings - key signature, staff, generator, notes, hands... - with the statistics data, so that later progress of different types of lectures can be analysed. This allows to compare all single handed, two-notes e-flat sessions with each other as well as the sessions You did in grand mode with two hands and two notes in the C-scale. Currently there is nothing online to do that, but the data is collected from now on and it would be an easy task to create an excel sheet from that, or whatever.
I was also interested n getting some information on the progress during the session - How well can I maintain the speed? What about the error rate? etc. - So I'm now saving the current state every 15 seconds and the results are quite interesting. Normally I start off quite well and get weaker towards the end. But that's not always the case. Sometimes I am able to catch up a downward trend and successfully fight against it. And some sessions are simply bad :-) Today I had a good session where I constantly got better while I was playing:
which is quite interesting to see. The absolute figures are not perfect. This was not my best day. But I was able to make the best out of it.
My current standard training is to play at least 1000 random notes C-Major, two hands, grand. Sometimes it's a real struggle and I have to fight to get over the fence; sometimes I am at 1300 in what feels like no time. From time to time I have to peak into the upper right corner to check my current status and how many notes are done. This distracts me and is quite expensive as it either causes me to make a mistake or induces an unneccessary delay. This could also be seen as an additional training and I am actually getting better at it.
However, I've now added a new feature: Every 50 hits a watermark appears briefly in the middle of the staff showing the current hits.

This watermark is visible only for the time of a quarter of a second, As I have my eyes on the staff most of the time, this actually works quite well, although it was a bit alarming during the first sessions. Not sure yet if this distracts me more than checking the current value in the upper right.
I have reduced the frame rate of the animations from around 60 to 30 frames per second. With a scroll speed of 75 this is hardly visible at all, but has a dramatic effect on the power consumption. Normally the fan of my "surface" was running most of the time and I got a "battery low" warning during my third session which I then finished with around 8% battery remaining. Now the fan barely ever runs and I finish my third session with more than 50% battery left.
Cool ;)
Philippe
Le lun. 6 avr. 2020 10 h 23, ddTech [email protected] a écrit :
I have reduced the frame rate of the animations from around 60 to 30 frames per second. With a scroll speed of 75 this is hardly visible at all, but has a dramatic effect on the power consumption. Normally the fan of my "surface" was running most of the time and I got a "battery low" warning during my third session which I then finished with around 8% battery remaining. Now the fan barely ever runs and I finish my third session with more than 50% battery left.
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/leafo/sightreading.training/issues/71#issuecomment-609826431, or unsubscribe https://github.com/notifications/unsubscribe-auth/AOMFPLGRWIB26PCFD5OUN6DRLHQWTANCNFSM4JTO5K4Q .
Hey all, sorry I haven't gotten a chance to update the project in a while. I decided that I'm just going to deploy what I had and not sit on it any longer, since it contained some important bug fixes.
This update:
- Fixes the issue with enharmonic note matching on staff mode (aka flat notes not working)
- Adds built in piano samples for playing audio without having to set up any midi stuff. Try out the revamped ear training section
- Bunch of updates to the "Play along" mode, including a new page where you can edit and upload songs.
I'm assuming there will be other bugs, but at least this should fix the main issue that people have been emailing me about :)
Hello, I'm glad to see this project is still alive!
I have some non-piano MIDI instruments that I would like to use with this program (guitar, bass, violin, mandolin, flute, recorder, etc), but am having trouble getting things set up and running on my own server to create patches to add this.
I checked the issues log and didn't see anyone else asking for such things. Has there ever been any interest in being able to set up notes on clefs for non-piano instruments?
@leafo the project is great, it's just what I needed, I'm very grateful, could you make a documentation, to be able to build this project locally?