Beefy Boxes and Bandwidth Generously Provided by pair Networks
P is for Practical
 
PerlMonks  

Re^2: utf8 hash keys revisited: How can i use musical symbols as hash keys?

by karlgoethebier (Abbot)
on Oct 07, 2014 at 07:21 UTC ( [id://1103058]=note: print w/replies, xml ) Need Help??


in reply to Re: utf8 hash keys revisited: How can i use musical symbols as hash keys?
in thread utf8 hash keys revisited: How can i use musical symbols as hash keys?

This is cool!

Thank you Jim for sharing this.

Best regards, Karl

«The Crux of the Biscuit is the Apostrophe»

  • Comment on Re^2: utf8 hash keys revisited: How can i use musical symbols as hash keys?

Replies are listed 'Best First'.
Re^3: utf8 hash keys revisited: How can i use musical symbols as hash keys?
by Jim (Curate) on Oct 07, 2014 at 16:06 UTC

    It's more extensible because, if you decide you need more enharmonic notes included in the data structure, you can easily add them. For example:

    ...
    b,-1,59,246.9416506281
    c♭¹,-1,59,246.9416506281
    b♯,0,60,261.6255653006
    c¹,0,60,261.6255653006
    d𝄫¹,0,60,261.6255653006
    c♯¹,0,61,277.1826309769
    d♭¹,0,61,277.1826309769
    c𝄪¹,0,62,293.6647679174
    d¹,0,62,293.6647679174
    e𝄫¹,0,62,293.6647679174
    ...
    

    It's also more extensible because it's a hash of a hash. More MIDI attributes can easily be added to the existing data structure as needed (e.g., absolute cents).

    (By the way, on the webpage titled MIDI Note Number and Frequency Table, there's at least one error. The frequency of MIDI note number 115, g⁵, is 6271.9269757080, not 5919.9107633862.)

      "It's more extensible..."

      Hi Jim,

      sure, this is right - no doubt.

      But don't you think that a "compound identifier" comes in more handy if you do the reverse mapping from Midi to Helmholtz like %midi_to_helmholtz = ( 70 => "a$sharp\/b$flat" );?

      Best regards, Karl

      P.S.: I skip the HoH approach for the moment, it is not the problem.

      «The Crux of the Biscuit is the Apostrophe»

        If maintaining a one-to-one relationship of %helmholtz_to_midi keys to %midi_to_helmholtz keys is an important requirement, then, yes, you have to do something kludgy like use a compound identifier. For example:

            $helmholtz_to_midi{'a♯¹/b♭¹'}{midi_note_number} = 70;
        

        and

            $midi_to_helmholtz{'70'}{helmholtz_note_name} = 'a♯¹/b♭¹';
        

        But the inescapable musical fact remains:  there isn't a one-to-one relationship of MIDI note numbers to Helmholtz note names. There's a one-to-many relationship, just as there's a one-to-many relationship of pitches (440 Hz) to enharmonic notes (g𝄪¹, a¹, b𝄫¹).

      Update/clarification: Since MIDI notation does not directly support enharmonics, one way this can be emulated is via after touch. Even if the MIDI is not sent to a synth (hardware or software), the nuance can still be represented (even if imperfectly).

      To add subtlety the notes, After touch can be used on some synths. (Pitch Bend applies to all notes on a channel while After Touch applies to a specific note.)

        "After touch can be used on some synths. (Pitch Bend applies to all notes on a channel while After Touch applies to a specific note.)"

        Sure, may be. But IMHO nobody mentioned synths, Aftertouch or Pitchbend in this thread. So what?

        Regards, Karl

        «The Crux of the Biscuit is the Apostrophe»

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1103058]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others perusing the Monastery: (2)
As of 2024-04-25 22:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found