Live data from Hacker News

Pianojacq, an easy way to learn to play the piano

jacquesmattheij.com

161–170 of 179 posts

Re: Pianojacq, an easy way to learn to play the piano

#161

Earlier quoted context omitted.

So, you are a much better player than I will likely ever be. For me what mattered is that the software would guide me to improve on a piece as fast as possible. To do this it measures your performance very precisely and then judges where you are still weak, and then it starts to bring you up by focusing on the weakest parts first until they are no longer the weakest parts. Like that you improve quite rapidly. Give it…

It sounds great to me - sight reading is difficult, and frustratingly hard work too, so assistance in mastering that skill is welcome. I am without MIDI keyboard at present as I play an acoustic upright, but I will look out for an opportunity to give it a proper go. And I might as well put in a feature idea (which I suspect would be rather tricky to implement but here goes anyway!): it would be awesome if it could ta…

Yes, that is the most frequently requested feature right now and on HN'er in this thread has courteously allowed me to use their software to try to implement this. Stay 'tuned' :)

Re: Pianojacq, an easy way to learn to play the piano

#162
post #145

Earlier quoted context omitted.

It’s worth noting that I don’t use Firefox by default, but Safari, and the messaging only talks about Firefox. I thought I’d read that WebMIDI was declined to be implemented by Apple because of security issues (including the ability for random webpages to send firmware updates to connected MIDI peripherals), and going back about four months I found an article here on HN ( https://news.ycombinator.com/item?id=23676109…

It would make a lot of sense for a browser team to implement just the input part of the API and leave the firmware flashing part out. Or have it implemented but disabled by default, just like the access to the microphone / camera is.

Absolutely, and also program change/note on/note off those would already enable a whole pile of applications.

It's typical Mozilla. We won't do 'X' because 'Y' but when you drill down they could easily do 'X' but they won't and 'Y' is just whatever they can throw up to get away from it without having to dig in and get it over with in the best possible way. If users want something and you start throwing up technical reasons why you won't instead of can't then you've lost that user if alternatives are available.

This is how you kill your market share.

An interesting bit from one of my favorite IT related book, the Soul of a new machine revolves around the 'mode' bit. The engineers all want a 'mode' bit because it will make their life that much easier, and they keep throwing up flak why it has to be that way and the CEO keeps his foot down and says 'no mode bit, period'. 'I don't care how you get it done but that's the constraint and you will have to deal with that constraint'. And so in the end they find a way.

With all the smarts at Mozilla if they really wanted to get it done, I'm sure they'd find a way. The existence proof is Chrome, and I've yet to hear of a random website corrupting a synth's firmware using Chrome.

Re: Pianojacq, an easy way to learn to play the piano

#163
post #158
post #141

Earlier quoted context omitted.

> Certainly the idea that a score somehow has more information in it than a midi recording is ridiculous A midi file is designed to contain different kinds of information than a score, so it can absolutely contain less information (of a certain kind) than a score. Imagine a group of notes that are attacked very close together in time in a midi file - is it meant to be a chord played without arpeggiation? A chord arpe…

Thanks, yes, I would agree that a midi recording and a score to a large extent encode different types of information. The score has less of some of the kinds of information that are in fact present in midi. And the midi, of course, doesn't specify anything about ranges of interpretation; it simply represents a specific interpretation of a score.

Midi note code 61: is that a C# or a Db, you pick...

Re: Pianojacq, an easy way to learn to play the piano

#164

Earlier quoted context omitted.

> you're playing at a given pace, miss, stop and repeat a bar, the app should detect that automatically instead of just carrying on expecting you to keep playing. I'm a piano noob but wouldn't you want to practice catching back up with the beat if you ever intend to perform?

This is a really good question, so I don't know why there are downvotes. There are 2 scenarios: 1) you're trying to learn the notes and 2) you're trying to get it in shape for a performance. It sounds like this software is geared towards scenario 1 where you don't yet know the piece and want to learn it. Generally when learning the piece it's best to fix mistakes as they happen, otherwise your brain sort of subconsci…

Yes, you really don't want to end up 'practicing your mistakes'.

Re: Pianojacq, an easy way to learn to play the piano

#165

This is great! My son, who normally loses interest in long songs that are a bit harder than his level, got through The well tempered clavier (one of the sample songs). The timing/spacing of the notes is a bit off though, I wish it scrolled according to beats instead of speeding up and down depending on what type of note was being played. I understand it has to stop and wait for the note to be played, but some of the…

Yes, this is one of the harder problems, a lot of brain cycles got spent on getting it as accurate as it is now but there definitely is still room for improvement. Keep in mind that the browser is a super hostile environment for this kind of application and accurate (millisecond level) time tracking in the browser is next to impossible. The solution we picked was to reduce/increase the speed of the scroll based on the error term between where we are and where we should have been. This keeps the scolling reasonably smooth while giving the smallest error in time. If we'd prioritize the scrolling it would look better but the timing would be further off. Suggestions for improvements to the code are of course very welcome, the code is extensively commented. There are some really nasty gotcha's in the interaction between the setup of the original midi file on the score leading to some decisions that retrospectively were probably sub-optimal but I will definitely revisit those in the near future to improve on them. Fun fact: the score is drawn three times to get it as close to time correct and visually attractive as possible, first a rough plan to get everything in the right bar and in the right order, then as close as possible to the right point in time and finally any odd space is used to spread out the note heads so it looks visually attractive. The plan is to remove all that and to first create an intermediary representation and then to draw that in one go.

Re: Pianojacq, an easy way to learn to play the piano

#166

On this note,seeing as cheap qwerty keyboards easily come in $5 and good in $20, is there a "piano" keyboard that only has keys laid out in piano fashion, rest left to drivers a small software that plays appropriate tones .... I'd prefer something small- only two octaves and a plus/minus button to shift octaves.

I will look at using the regular PC keyboard as a stand-in midi keyboard of ~ 2 octaves. This is not going to give a great experience (especially because many keyboards have limited key-rollover) but it should give a less-hardware-required onboarding experience, which is always a good thing.

Re: Pianojacq, an easy way to learn to play the piano

#168

Earlier quoted context omitted.

Yes, but MIDI does allow for the file to contain a KEY specification (as well as tempo, time signature and a bunch of other info). I know the scale/key/mode as such as not encoded in the note on/off signals but once you know what key you are in (and this can be determined in a variety of ways, including from the statistical properties of the note on/note off signals) the problem becomes a bit more tractable. Still, y…

The key signature meta-event is barely functional if you have a remotely expansive view of "music theory". Identifying a root note, major/minor and number of sharps OR flats doesn't really pin down a large number of actual scales. For your purposes, it may be enough, but in more general terms, it's woefully underspecified. A better way for MIDI to have done this would have been to use a "standard" scale numbering sys…

Absolutely, midi is clearly a device centric protocol, not a musically correct protocol. But with the various XML music formats there are alternatives that can be converted into midi fairly easily. But right now we only support midi, we will add more formats though.

Re: Pianojacq, an easy way to learn to play the piano

#169

Earlier quoted context omitted.

I have no illusion that this will ever be perfect, but there is something that may be 'good enough' for the general purpose and then maybe we can very incrementally improve from there. One way in which to solve this is to use an algorithm for the bulk and a database of exceptions for cases where the algorithm would get it wrong.

This is my first comment on HN. I wrote some algorithms to do with this topic. I've been working on some code for a long time which looks at the c=2^12 combinations of notes, their properties and so on. I call each of them changes. I'm actually still working on material for a book which contains dynamically generated layouts based on these changes. So far I have addressed many music set theory properties, as well as…

Super interested in this, could you please contact me via jacques@modularcompany.com? (your profile is not filled out for me so I don't know your email address, note that HN has the option to add a public email address as well in your profile but for you that is still blank).

Re: Pianojacq, an easy way to learn to play the piano

#170

Earlier quoted context omitted.

I have no illusion that this will ever be perfect, but there is something that may be 'good enough' for the general purpose and then maybe we can very incrementally improve from there. One way in which to solve this is to use an algorithm for the bulk and a database of exceptions for cases where the algorithm would get it wrong.

This is my first comment on HN. I wrote some algorithms to do with this topic. I've been working on some code for a long time which looks at the c=2^12 combinations of notes, their properties and so on. I call each of them changes. I'm actually still working on material for a book which contains dynamically generated layouts based on these changes. So far I have addressed many music set theory properties, as well as…

How would this method handle the bar I posted?
Post reply on HN