Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

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 ( #1103093=note: print w/replies, xml ) Need Help??


in reply to Re^2: 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?

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.)

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

Replies are listed 'Best First'.
Re^4: utf8 hash keys revisited: How can i use musical symbols as hash keys?
by karlgoethebier (Abbot) on Oct 07, 2014 at 17:16 UTC
    "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𝄫¹).

Re^4: utf8 hash keys revisited: How can i use musical symbols as hash keys?
by RonW (Parson) on Oct 07, 2014 at 22:18 UTC

    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
Node Status?
node history
Node Type: note [id://1103093]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (4)
As of 2020-09-30 23:16 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    If at first I don’t succeed, I …










    Results (171 votes). Check out past polls.

    Notices?