Register | Login
Views: 19364387
Main | Memberlist | Active users | ACS | Commons | Calendar | Online users
Ranks | FAQ | Color Chart | Photo album | IRC Chat
11-02-05 12:59 PM
0 user currently in Programming. | 3 guests
Acmlm's Board - I2 Archive - Programming - How do you extract "musical notes" from an MIDI track??? | |
Add to favorites | "RSS" Feed | Next newer thread | Next older thread
User Post
eNathan

Goomba
Level: 8

Posts: 28/33
EXP: 1773
For next: 414

Since: 08-07-05
From: United States, but does it matter?

Since last post: 1 day
Last activity: 8 days
Posted on 10-24-05 01:44 AM Link | Quote
Hey Acmlmer's.

I basicly want to extract the musical notes from MIDI tracks. I have google'd all I can google with no luck.

I am assuming there are two ways.

1. Write your own data type to handle the MIDI format (I dont know the structure of an MIDI, however).

2. Use a control (ActiveX, Component, whatever) to do it for you. However, I have not found any.

I am using Delphi by the way. I can read VB and C++ tho, if anybody wants to post in those languages.

~eNathan 3.14
Book Keeper
♫♫♫ n00blet ♫♫♫

Level: 21

Posts: 157/160
EXP: 49435
For next: 508

Since: 03-15-04
From: Wired

Bookworm eat fresh!

Since last post: 20 hours
Last activity: 8 hours
Posted on 10-24-05 08:53 PM Link | Quote
*bump*

You'll be able to do that with finale notepad.
eNathan

Goomba
Level: 8

Posts: 29/33
EXP: 1773
For next: 414

Since: 08-07-05
From: United States, but does it matter?

Since last post: 1 day
Last activity: 8 days
Posted on 10-25-05 10:26 AM Link | Quote
Thanks for the link. I singed up to the site to download the control, and still have not recieved my password via Email

Lets get a little into the actaul format of an MIDI for a sec. If anybody knows the midi format, please reply to this as I am a little lost.

Here are the MTHD and MTRK record's I have created based on this http://www.borg.com/~jglatt/tech/midifile.htm

Type MTHD_CHUNK = Record
ID: Array [1..4] of Char;
Length: Integer;//4 byte Integer = Unsigned Long???
Format: ShortInt;//2 byte integer
NumTracks: ShortInt;
Division: ShortInt;
End;

Type MTRK_CHUNK = Record
ID: Array [1..4] of Char;
Length: Integer;
Data: Char;
End;

There is only one problem with this, which should't really be a problem. The first 8 bytes of the MIDI file reads (in hex)

4D 54 68 64 00 00 00 06

The first 4 bytes of this (4D 54 68 64), when read as a 4 byte string, reads "MThd". The next four bytes (00 00 00 06), when read as a 4 byte integer should read 6! Because 00 00 00 06 = 6! However, Delphi is telling me that it equals 100663296. I am stuck on this problem. I have tried using all 4-byte data types (afak), and none of them equal 6.

Any further help would be great.

Edit :: I found out that the 4 bytes [00 00 00 06] were actaully in "reverse byte order", so I grabed this procedure to reverse the bytes again, yeilding the value of 6.

procedure Swap32(var src, dest) ;
asm
mov ecx, dword ptr[eax] ;
bswap ecx ;
mov dword ptr[edx], ecx
end ;

But why in the word are the bytes reversed in the midi file? You are just going to have to reverse them back. Or is there something I dont know...?

*Please move this to the programming section*


(edited by eNathan on 10-25-05 01:48 AM)
Add to favorites | "RSS" Feed | Next newer thread | Next older thread
Acmlm's Board - I2 Archive - Programming - How do you extract "musical notes" from an MIDI track??? | |


ABII


AcmlmBoard vl.ol (11-01-05)
© 2000-2005 Acmlm, Emuz, et al



Page rendered in 0.013 seconds.