Jump to content

Owen Anderson

  • Posts

  • Joined

  • Last visited

Everything posted by Owen Anderson

  1. Sorry, I didn’t mean to imply that the book specifically addresses notation systems. I came to it with essentially zero musical knowledge (but a lot of math background), and it helped me understand things like why keys even exist, which then helped justify to me why you’d want a notation system that was key-oriented.
  2. Volume 1. Volume 2 is really only if you want to learn DSP algorithms.
  3. I will just add that, as a mathematically-minded person, the book "Musimathics" by Gareth Loy did a great job of explaining why a lot of things that seem arbitrary in music are the way they are (or at least fesses up on which ones really are historical accidents). I credit that feeling of arbitrariness with being the leading cause of my consistently showing zero interest in music classes as a child.
  4. I just added title extraction to the output, when present. I do dream of being able to automatically generate fingerings for complex harmonic arrangements. The model is actually able to do so, but the input is the hard part. Taking input from ABC means recreating a lot of the timing logic from abc2midi, which would be a pain. Taking input from MIDI means losing the looping structure of the score, and being stuck with whatever chord rendering abc2midi picked.
  5. Chords shouldn’t automatically kill it, but ones generated by abc2midi often contain chords too deep for the Anglo’s range. If you send me the file I can see what’s wrong with it. I can look into adding a title, but I don’t think MIDI files are guaranteed to contain one?
  6. Maybe some day, but ABC is easy for humans and hard for computers. In the mean time, you can convert your ABC to MIDI and then upload it. Let me know if you hit any problems.
  7. Gary's Christmas song book has done more than just about anything else to help me memorize the chord shapes for Cmaj, Fmaj, Gmaj on my C/G Anglo. 🤣
  8. I finally got my model running in a web-friendly location here. You can currently upload a MIDI file and get back human-readable text specifying the fingering. I could fairly easily change the output to something like JSON or whatever format would be most conducive to integration. And the button numbering scheme is ultimately arbitrary, just currently chosen for my own convenience.
  9. I just got this hooked up in a form that others can try. If you navigate to this page, you can upload a MIDI file and have my model generate a fingering for a 30b Wheatstone C/G Anglo. It currently prints a text output that lines up with Gary Coover's tablature system. While the model supports simultaneous notes, but you probably won't want to use a MIDI file with guitar chords rendered into it by abc2midi. The model will try to translate the notes exactly as abc2midi rendered them, which is unlikely to result in anything you'd actually want to play on a concertina.
  10. Would be interesting if we could get it working together with my automatic fingering generation project. I just implemented a version that can generate fingering from a MIDI sequence, and was looking into how to expose it as an HTTP API...
  11. I think I just had success on fixing it. It does appear to have been an alignment issue, but I didn't have to bend the lever! Since it's a hook-type action, the levers can actually slide forward and backward under the levels. It appears that this one had slid slightly too far in one direction, misaligning the button. I slide it a millimeter or so back the other direction, and it immediately felt MUCH better!
  12. I have a metal ended Marcus C/G anglo (hook-style action), and the left hand right-most C row button has been gradually becoming sticky over time, i.e. it does not immediately pop back when I release the button. It started out pretty minor, but has gradually worsened over time, and is now reaching the point where it interferes with playing quickly. I've taken the end off to examine it, and the button appears to function just fine with the end removed. I can see some wear & darkening on the button hole's felt, on the side towards the hand rest. My leading theory is that the button is rubbing against the side of of the hole, which creates enough friction to slow the release. Is replacing the felt on that hole the right next step? Or is there something I should be looking into with respect to the button alignment itself? Anything else I should consider?
  13. I always visualize them horizontally, even though I know it doesn’t make sense physically. The fact that I am a solid touch typist may influence this. Visualizing then as three horizontal rows makes it very analogous to touch typing.
  14. Will there be a Kindle version? 😉
  15. Harvey Tools makes a 0.001" end mill, which would get you close, though good luck getting a smooth finish on that.
  16. I ran across this performance arranged by John Kirkpatrick of the Evercreech Hornpipe. I see at least one concertina in the band! Sheet music of John's arrangement seems to be available here: https://www.efdss.org/55-resources/learning-resources/2527-efdss-resource-bank-the-evercreech-hornpipe I think the bounciness of the tune will work well on an Anglo, though I'm still deciding whether to transpose it to an easier key.
  17. I'm purely speculating as I have no experience making reeds. I suspect that there's something about the material properties that impacts this. The reed is meant to flex, and the shoe is not. Presumably the difference in materials between the shoe and the reed contributes to ensuring that this is the case, as would things like intentional grain misalignment between the two materials. A unitary reed and shoe would lose those benefits. I also suspect that, for a mass-produced item like an accordion reed, the machining required to make a unitary reed wouldn't be able to deliver as smooth a reed tip as electro-abrasion does, which would impact the sound. Which is not to say that it's impossible, but I suspect there's a lot to be figured out before it's clear if it's possible to make a good unitary reed.
  18. I got MIDI input working. It seems to work well, and makes it much easier to ingest longer tunes into the tool. It does *technically* work for chordal arrangements, but the way abcmidi renders chords in MIDI isn't especially similar to the way you would typically play them on an Anglo, so it's not as helpful as you might think. Here's an example of generating a fingering for the entirety of Cielito Lindo, via abcmidi with guitar chords disabled. I did successfully create a version using guitar chords, but it required a lot of `%%MIDI` commands in the ABC to get various chords in the right octaves, and it still didn't match the way you'd actually play them on an Anglo enough to be useful. X: 1 T: Cielito Lindo R: waltz M: 3/4 L: 1/8 K:G %%staffsep 40pt "^Vbrsb"[|\ "G"g2 g2 e2- | "D7"e2 f2 d2 | "G"g2 g2 e2- | "D7"e2 f2d2 |\ "G"g2 g2 e2- | e2 f2d2 | "Am"c2 A4- | A6 | "D"f2 f2 f2 | f2 e2 d2 | "D7"c2 A2 A2- | A2 B2 c2 |\ d2 d2 d2- | d2 d3 c | "G"BA G4- | G6 | "^Refrain"|:\ "G"[bd]6 | [ad]4 g2 | "C"[ec]6- | [ec]6 |\ [ac]6 | "D7"[ac]4 gg | "G"[dB]2 [gB]4- | [gB]4 d2 | [eB]4 d2 | [eB]2 e2 dd | "C"[c'a]2 [c'a]2 [af]2- | "D7"[af]2 f2 d2 |\ [ec]2 [ec]2 [dB]2- | [dB]2 [cA]2 [dB]2 | "G"BA G4- | [GG,]6 :|] Time 1: (R06Push, index) Time 481: (R06Push, index) Time 961: (R02Push, middle) Time 1921: (R06Pull, index) Time 2401: (R02Pull, middle) Time 2881: (R06Push, index) Time 3361: (R06Push, index) Time 3841: (R02Push, middle) Time 4801: (R06Pull, index) Time 5281: (R02Pull, middle) Time 5761: (R06Push, index) Time 6241: (R06Push, index) Time 6721: (R02Push, middle) Time 7681: (R06Pull, index) Time 8161: (R02Pull, middle) Time 8641: (R01Push, index) Time 9121: (L04aPush, middle) Time 11521: (R06Pull, index) Time 12001: (R06Pull, index) Time 12481: (R06Pull, index) Time 12961: (R06Pull, index) Time 13441: (L10Pull, index) Time 13921: (L10Push, index) Time 14401: (L09Pull, middle) Time 14881: (L05Pull, index) Time 15361: (L05Pull, index) Time 16321: (L09Push, middle) Time 16801: (L09Pull, middle) Time 17281: (L10Push, index) Time 17761: (L10Push, index) Time 18241: (L10Push, index) Time 19201: (L10Push, index) Time 19921: (L09Pull, middle) Time 20161: (L09Push, middle) Time 20401: (L05Pull, index) Time 20641: (L04aPull, middle) Time 23041: (R07Push, middle) (L10Push, index) Time 24481: (R02aPush, middle) (L10Push, index) Time 25441: (R02aPull, middle) Time 25921: (L10Pull, index) (L09Pull, middle) Time 28801: (R02aPush, middle) (R01Push, index) Time 30241: (R02aPush, middle) (R01Push, index) Time 31201: (R02aPull, middle) Time 31441: (R02aPull, middle) Time 31681: (L10Push, index) (L09Push, middle) Time 32161: (R06Push, index) (L09Push, middle) Time 34081: (L10Push, index) Time 34561: (L10Pull, index) (R01Pull, middle) Time 35521: (L10Push, index) Time 36001: (L10Pull, index) (R01Pull, middle) Time 36481: (L10Pull, index) Time 36961: (L10Push, index) Time 37201: (L10Push, index) Time 37441: (L09Pull, ring) (R07Pull, middle) Time 37921: (L09Pull, index) (R07Pull, middle) Time 38401: (R07Pull, middle) (R06Pull, index) Time 39361: (R06Pull, index) Time 39841: (L10Push, index) Time 40321: (L10Pull, index) (L09Pull, middle) Time 40801: (L10Pull, index) (L09Pull, middle) Time 41281: (L10Push, index) (L09Push, middle) Time 42241: (L09Pull, middle) (L08Pull, ring) Time 42721: (L10Push, index) (L09Push, middle) Time 43201: (L09Push, middle) Time 43441: (L05Pull, index) Time 43681: (L08Push, ring) Time 44641: (L02Push, pinky) Time 46081: (R07Push, middle) (L10Push, index) Time 47521: (R02aPush, middle) (L10Push, index) Time 48481: (R02aPull, middle) Time 48961: (L10Pull, index) (L09Pull, middle) Time 51841: (R02aPush, middle) (R01Push, index) Time 53281: (R02aPush, middle) (R01Push, index) Time 54241: (R02aPull, middle) Time 54481: (R02aPull, middle) Time 54721: (L10Push, index) (L09Push, middle) Time 55201: (R06Push, index) (L09Push, middle) Time 57121: (L10Push, index) Time 57601: (L10Pull, index) (R01Pull, middle) Time 58561: (L10Push, index) Time 59041: (L10Pull, index) (R01Pull, middle) Time 59521: (L10Pull, index) Time 60001: (L10Push, index) Time 60241: (L10Push, index) Time 60481: (L09Pull, ring) (R07Pull, middle) Time 60961: (L09Pull, index) (R07Pull, middle) Time 61441: (R07Pull, middle) (R06Pull, index) Time 62401: (R06Pull, index) Time 62881: (L10Push, index) Time 63361: (L10Pull, index) (L09Pull, middle) Time 63841: (L10Pull, index) (L09Pull, middle) Time 64321: (L10Push, index) (L09Push, middle) Time 65281: (L09Pull, middle) (L08Pull, ring) Time 65761: (L10Push, index) (L09Push, middle) Time 66241: (L09Push, middle) Time 66481: (L05Pull, index) Time 66721: (L05Push, index) Time 67681: (L02Push, pinky) sample.mid
  19. I had one other idea that I think would be interesting the other day. I could relatively easily modify the model to operate on relative rather than absolute pitches, which would allow it to find and transpose to the most playable key for a tune.
  20. My next big project on this front is going to be solving tune input to the model. After punting on writing an ABC parser for a long time, I finally hit on an idea that I think will work better: taking input from MIDI files. That will allow me to rely on the ABC->MIDI conversion process to expand chords into individual notes, without needing to handle all the weirdness of musical notation.
  21. I think my model is only using button 5 out of a generic mild preference for an index-finger button over a ring-finger button, and a middle-row button over an inner-row button.
  22. I haven't entered the verse yet. I expect the melody proper not to be super interesting, and inputting the melody + chords into the program is currently rather a pain. I have a plan in mind for making that easier, but I haven't implemented it yet.
  23. It's for C/G. Here's the output from running the model for a G/D Wheatstone layout. All using gcoover tab numbering. Reed assigned: ( R09Pull, pinky , R02aPull, middle ) Reed assigned: ( R08Push, ring , R06Push, index ) Reed assigned: ( R04Push, pinky , R04Push, pinky ) Reed assigned: ( R04Pull, pinky , R03Pull, ring ) Reed assigned: ( R08Push, middle , R03Pull, middle ) Reed assigned: ( R08Push, middle , R03Pull, middle ) Reed assigned: ( R04Push, pinky , R04Push, pinky ) Reed assigned: ( R04Push, pinky , R04Push, pinky ) Reed assigned: ( R06Push, index , R02Push, middle ) Reed assigned: ( R04Push, pinky , R02Push, middle ) Reed assigned: ( R06Push, index , R06Push, index ) Reed assigned: ( R07Push, ring , R02Push, middle ) Reed assigned: ( R06Push, index , R06Push, index ) Reed assigned: ( R04Pull, pinky , L10Pull, index ) Reed assigned: ( R07Push, middle , R07Push, middle ) Reed assigned: ( R06Push, index , R06Push, index ) Reed assigned: ( R06Push, index , R06Push, index ) Reed assigned: ( R05aPull, pinky , R08Push, middle ) Reed assigned: ( R05aPull, pinky , R08Push, middle ) Reed assigned: ( R08Push, middle , R07Pull, index ) Reed assigned: ( R07Pull, index , R07Pull, index ) Reed assigned: ( R03Push, ring , R03Push, ring ) Reed assigned: ( R04Pull, pinky , R03Pull, ring ) Reed assigned: ( R04Pull, pinky , R03Pull, ring ) Reed assigned: ( R03Push, ring , R02Push, middle ) Reed assigned: ( R03Pull, ring , R02Pull, middle ) Reed assigned: ( R06Push, index , R02Push, middle ) Reed assigned: ( R02Push, middle , R02Push, middle ) Reed assigned: ( R02Pull, middle , R02Pull, middle ) Reed assigned: ( R01Push, index , R01Push, index ) Reed assigned: ( R01Push, index , L03Push, ring )
  24. After some more tinkering with the various weights of the model, here's another example: the refrain from Cielito Lindo, the well-known mariachi aye-aye-aye-aye song. This tune demonstrates the system's ability to generate a good fingering in the face of many simultaneous notes. I'm particularly pleased with the playability of the solution. It does a good job of minimizing adjacent note jumping, often reusing one finger from a pair for the next note in the sequence. cielitolindo2.pdf
  • Create New...