Got it to work (yay), but this error shows up sometimes:
...
File "C:\Users\X\AppData\Roaming\.minecraft\midicraft\midi.py", line 334,
in readstr
assert str[:4] == "MThd"
AssertionError
This is the error (everything above it is just showing you where the line was called from). "MTHd" (or 0x4D546864) is the part of the file header that indicates it's a valid MIDI file. I'm guessing that smarter media players still can figure it out (if these MIDI files are playing elsewhere on your computer), but the Python code I have doesn't work if the header's not correct. Could you send me or direct me to a file that gives you that error? Everything that I have works fine, but I've had a few other reports of that problem.
And Nalok: the point of my program is that you should be able to do it yourself! If there's a MIDI version of the song you want to convert, then MIDICraft does the work for you, and if you take a little bit of time to tweak it you can get even better results.
I'm not really sure it's on topic or why you brought it up, but it's a video from another YouTube user that had been taken down that I had reuploaded. Let's try and keep the thread about MIDICraft please !
Sales-Kital: What sort of problems are you having? If you look through the thread there are several guides to installing Python and numpy, and some common issues are addressed individually as well. If you have a more specific question, I'd be happy to try and help.
XDMickeYXD: MIDICraft (well, some of the code it uses) requires numpy. You can download it from http://sourceforge.net/projects/numpy/files/NumPy/1.5.1/. Make sure that the version you download matches the version of Python you're running.
gdscei: I wonder if there's some sort of weird formatting issue, since it got stuck in the MIDI read. Could you link me to the file you were trying and try a different MIDI in the meantime? I wish I knew why these random files were giving me problems.
sn0re: I also wish I knew why people occasionally had tkinter problems. What version of Python are you using (try "python --version" at the command line)?
It freezes mine too and seems problematic in other MIDI utilities I'm trying—let me keep looking at it. Is it supposed to sound totally bizarre and unmusical? It just sounds like a bunch of notes clanking around, and since you said it was for Frets on Fire I wasn't sure if it was different somehow.
e: Oh, I see. Yeah, even this MIDI worked, it would just sound like a bunch of racket. Its rhythms are right for whatever song it represents, but the notes aren't actual pitches, they just represent the buttons you need to be pushing in the game. Try it with an actual MIDI song and see if that works.
XDMickeYXD: MIDICraft (well, some of the code it uses) requires numpy. You can download it from http://sourceforge.net/projects/numpy/files/NumPy/1.5.1/. Make sure that the version you download matches the version of Python you're running.
gdscei: I wonder if there's some sort of weird formatting issue, since it got stuck in the MIDI read. Could you link me to the file you were trying and try a different MIDI in the meantime? I wish I knew why these random files were giving me problems.
sn0re: I also wish I knew why people occasionally had tkinter problems. What version of Python are you using (try "python --version" at the command line)?
2.7.1 32 bit, installed in C:/Python27, added to PATH, with numpy 32 bit installed. All on 64 bit windows 7.
Final Countdown--that's a good idea! I tried Bohemian Rhapsody but it's got too much going on tempowise to convert very easily, but good luck.
Thanks for uploading your video! I'm glad you got it to work finally.
e: Also! For better results, you're best off replacing the pressure plate click sound with silence:
Quote from Diebold »
If you want to get rid of the sound files, first find them in the minecraft folder in .minecraft\resources\newsound\random
find the files click.ogg and wood click.ogg
Now you need to replace those files with silent versions, so get a sound editor and take out the sound
Also you need to make sure the files are read only, you can see that under properties
Note: If you just delete them or replace them with files that are not read only, they will be fixed back to the originals
Haha, I love it. Even the tempo is kind of all over the place and it sounds like a mess, it's still really cool. Thanks!
e: I'm also worried that YouTube is being ridiculous and has blocked the audio because they think it's licensed. I guess putting song names in titles is risky for some awful reason?
Awesome, i got it to work, installed numpy and stuff =D
Although there might be one tweak you want to add to the part where it 'clears' a path for the midi 'road',
make water source blocks around it disappear, cause when i converted my first midi part of the path was ff'ed because the water killed the redstone D:
I'd never really thought about it—I always just build it above sea level, which has never given me any trouble. Where were you trying to put it?
There's also a different "issue":
When you choose white wool as the stair block, and there was a yellow flower where the cloth is now, the cloth turns yellow
I've noticed that too! It's not from a yellow flower, though—red and yellow flowers are completely different blocks. Wool color data is stored in the same place that a lot of other special block data is kept, and I think it's inheriting those—orange wool, I assume, is from either redwood trunks or leaves (which both have a value of 0x01). Yellow is 0x04, though, and I'm not sure which common blocks have special data values that high. http://www.minecraftwiki.net/wiki/Data_Values is great if you want to learn a little bit more about that kind of stuff.
I've tried 3 different midi files i have and it doesn't seem to work. I've downloaded the latest versions of python and numby, so the interface works and i select my file. I'm on a quad core machine and it only takes me about 5 minutes to compile a custom 64x64 map using a map editor. I'd expect this to take far less, but i left it running for 15 minutes on each song and got nothing. Can someone post a midi file they KNOW works? I have no way to confirm my midi files are "good" for the program.
I've tried 3 different midi files i have and it doesn't seem to work. I've downloaded the latest versions of python and numby, so the interface works and i select my file. I'm on a quad core machine and it only takes me about 5 minutes to compile a custom 64x64 map using a map editor. I'd expect this to take far less, but i left it running for 15 minutes on each song and got nothing. Can someone post a midi file they KNOW works? I have no way to confirm my midi files are "good" for the program.
Thank you, this proved it's my midi files. They are ancient (taken from original dos game files more than 15 years ago) so i guess their format isn't compatible, damnit!
gdscei: What do you mean by drum support? I think that every video posted in this thread except Ode to Joy has drums (including your own, right?). And the voids actually come from when I have to generate a chunk that doesn't exist on your map yet (especially a problem if you've just created a new world to lay out a MIDI path). There might be ways to avoid this (I need to look back through some PMs codewarrior sent me), but when I add .schematic support, that's going to be the smartest way to use the program and should avoid the chunk generation issues.
XDMickeYXD: If you can think of a really good way to keep water out, I'll consider it. But short of creating a wall that goes up to the skybox (which would make the already-slowish pathclearing take forever) and a ceiling (which would take some changes, since right now I don't even keep track of the maximum height), I'm not sure there's anything I could do that would prevent someone from having problems if they tried to generate the path at the bottom of the ocean. As far as I know, Vanilla doesn't generally have water above sea level, so hopefully it's not too huge of a deal.
hi_tech_guy_18: Honestly, I'm afraid that MIDI editing is beyond the scope of my program. It would be fairly simple to allow channels to be omitted, but that's not really useful without a way to preview individual channels and I'm not sure that the Python code I have now is cut out for that. I'll look into it, but there are lots of simple and free MIDI editors out there that you can use to optimize your song—change its key to F# or B, change its tempo to 60 or 120, cut out unnecessary tracks and rhythms, and make sure that you have instruments straightened out (right now, MIDICraft puts anything with "bass" in its name on bass, anything on channel 10 on drums (which should work if you're following standards), and everything else on the harp. I also need to investigate a fully-Redstone solution, although building it so that the player can hear the whole thing sounds difficult (especially since right now my program should allow for MIDIs of arbitrary length, which is impossible when you have to stand still and hear the whole thing). Your minecart track idea sounds good, though, and I'll try and push that into my next version.
I'm also going to try and add an option to automatically change the pressure plate click sounds, although anyone who's jumped through all the hoops to get the program to run in the first place should be savvy enough to replace the sound files themselves.
What I mean is that the drum support is there, but not good enough. As you said in the readme: "other pitches will be played as stick clicks". I hear a lot of these, and it gets kinda annoying and in some songs where percussion instruments are more used it makes the whole song sound stupid.
Oh, I see. That could be optional, but I kind of like the clickiness of it—it fits the weird artificial aesthetic of it. I'll put it on my list!
This is the error (everything above it is just showing you where the line was called from). "MTHd" (or 0x4D546864) is the part of the file header that indicates it's a valid MIDI file. I'm guessing that smarter media players still can figure it out (if these MIDI files are playing elsewhere on your computer), but the Python code I have doesn't work if the header's not correct. Could you send me or direct me to a file that gives you that error? Everything that I have works fine, but I've had a few other reports of that problem.
And Nalok: the point of my program is that you should be able to do it yourself! If there's a MIDI version of the song you want to convert, then MIDICraft does the work for you, and if you take a little bit of time to tweak it you can get even better results.
Current Progress on Digicraft Texturepack, Vanilla - 100%
Sales-Kital: What sort of problems are you having? If you look through the thread there are several guides to installing Python and numpy, and some common issues are addressed individually as well. If you have a more specific question, I'd be happy to try and help.
gdscei: I wonder if there's some sort of weird formatting issue, since it got stuck in the MIDI read. Could you link me to the file you were trying and try a different MIDI in the meantime? I wish I knew why these random files were giving me problems.
sn0re: I also wish I knew why people occasionally had tkinter problems. What version of Python are you using (try "python --version" at the command line)?
e: Oh, I see. Yeah, even this MIDI worked, it would just sound like a bunch of racket. Its rhythms are right for whatever song it represents, but the notes aren't actual pitches, they just represent the buttons you need to be pushing in the game. Try it with an actual MIDI song and see if that works.
2.7.1 32 bit, installed in C:/Python27, added to PATH, with numpy 32 bit installed. All on 64 bit windows 7.
Thanks for uploading your video! I'm glad you got it to work finally.
e: Also! For better results, you're best off replacing the pressure plate click sound with silence:
Are you adjusting tempos to make it work better or doing any other tweaks? These sound pretty great!
e: I'm also worried that YouTube is being ridiculous and has blocked the audio because they think it's licensed. I guess putting song names in titles is risky for some awful reason?
Thanks for the great software. with the new release everything is running great. well at least for me.
.
^death is immanent
[tnt] [tnt] [tnt]
[tnt] [DORE] [tnt]
[tnt] [tnt] [tnt]
Just do it...
I'd never really thought about it—I always just build it above sea level, which has never given me any trouble. Where were you trying to put it?
I've noticed that too! It's not from a yellow flower, though—red and yellow flowers are completely different blocks. Wool color data is stored in the same place that a lot of other special block data is kept, and I think it's inheriting those—orange wool, I assume, is from either redwood trunks or leaves (which both have a value of 0x01). Yellow is 0x04, though, and I'm not sure which common blocks have special data values that high. http://www.minecraftwiki.net/wiki/Data_Values is great if you want to learn a little bit more about that kind of stuff.
Thank you, this proved it's my midi files. They are ancient (taken from original dos game files more than 15 years ago) so i guess their format isn't compatible, damnit!
XDMickeYXD: If you can think of a really good way to keep water out, I'll consider it. But short of creating a wall that goes up to the skybox (which would make the already-slowish pathclearing take forever) and a ceiling (which would take some changes, since right now I don't even keep track of the maximum height), I'm not sure there's anything I could do that would prevent someone from having problems if they tried to generate the path at the bottom of the ocean. As far as I know, Vanilla doesn't generally have water above sea level, so hopefully it's not too huge of a deal.
hi_tech_guy_18: Honestly, I'm afraid that MIDI editing is beyond the scope of my program. It would be fairly simple to allow channels to be omitted, but that's not really useful without a way to preview individual channels and I'm not sure that the Python code I have now is cut out for that. I'll look into it, but there are lots of simple and free MIDI editors out there that you can use to optimize your song—change its key to F# or B, change its tempo to 60 or 120, cut out unnecessary tracks and rhythms, and make sure that you have instruments straightened out (right now, MIDICraft puts anything with "bass" in its name on bass, anything on channel 10 on drums (which should work if you're following standards), and everything else on the harp. I also need to investigate a fully-Redstone solution, although building it so that the player can hear the whole thing sounds difficult (especially since right now my program should allow for MIDIs of arbitrary length, which is impossible when you have to stand still and hear the whole thing). Your minecart track idea sounds good, though, and I'll try and push that into my next version.
I'm also going to try and add an option to automatically change the pressure plate click sounds, although anyone who's jumped through all the hoops to get the program to run in the first place should be savvy enough to replace the sound files themselves.
Thanks for all your feedback, everyone!
Oh, I see. That could be optional, but I kind of like the clickiness of it—it fits the weird artificial aesthetic of it. I'll put it on my list!