ssjfulkon198 wrote:Being my lazy self, I haven't read the whole thread, just the first page. I think this would definitely be done best through the use of a seperate program.
With all due respect, you should have read the whole thread. Most of the first page is very old, and not relevant to the current discussion.
We are talking about a separate program - a Python script I have written.
I am doing some final testing of that script right now, and will release the source code shortly...
I'm posting this while waiting for a test run to complete.
ssjfulkon198 wrote:While the difficulty of a song is relative to the person playing it...
That's the exact problem I'm trying to get around. I seek an objective rating, determined solely from the notes in notes.mid, regardless of who is playing.
ssjfulkon198 wrote:Player who aren't as good would play songs with lower % of difficulty. Better players would play higher %'s respectively.
Then how would the less skilled players get better? You've got to play songs just above you skill level to improve (if improvement is one of your goals).
I appreciate your input, but I think you might be interested in reading the thread more thoroughly to see what's going on.
---- EDIT ----
Belisario93 wrote:Once I get my hands on this script I'm going to try out a lot of things.
Now's your chance...
Current source code released!
This is a work in progress. Run my scripts at your own risk. I have made them as safe as possible, but I guarantee nothing and take no responsibility for any damages.
1. You will need a Windows XP machine. This script uses a 16-bit command line tool I found on the internet, which doesn't run on Vista (at least, not on my Vista machine).
2. On that machine, you will need Python 2.5 or later - earlier versions of Python will NOT work.
3. After DL'ing the rar, put the files in a new folder on your computer.
4. Open fofsongs.py in a text editor...
4a. On line 15, change mainpath to the folder where you put the files from the rar.
4b. On line 16, change songpath to your song folder.
4c. SAVE fofsongs.py
Future versions of my script will do heavy modifications to the files in the songpath folder (the one you entered in step 4a).
I have made a copy of my entire song collection, and I run this script on that copy.
To avoid needless risk, I strongly recommend you do the same (make a copy of your songs, and run the script on that copy.)
5. Open a command prompt, and navigate to the folder with the rar contents.
6. Run fofsongs.py from the command line.
Two things will happen...
1. In that folder with the python scripts, a text file will be created (fofsongs.txt) with the rating data.
Note that the script is designed to append to this file if it already exists.
So during testing or development, you'll likely want to delete this file before each run, or else you may get multiple entries for the same song.
While the text file is human-readable, it's in a format that I intend to parse with another script later.
Look at the function writedata() in fofsongs.py to see how that format works.
2. The reason for running from a command line:
Songs which didn't get rated successfully will print to the command line when the script is finished.
(A more elegant solution is planned for future updates, but this is a start.)
As I get more of my Python source cleaned up and ready for human consumption, I'll post updates.
When I next post an update to the source, I'll probably start a new thread for this topic (so I can keep an updated link to the current source on the first post.)
Some quick notes for Python developers:
The main script is fofsongs.py.
This imports fofparse.py - the script with functions to parse various midi formats.
Once fofparse.py has parsed the midi and returned the data to fofsongs.py, execution goes to fofrate.py which calculates the rating.
fofparse and fofrate are designed so you can add functions, and have them called from fofsongs with just a bit of modification to fofsongs.
Naturally, I suggest you read all the source and understand it before any modifications.
And to see the text versions of the midi files (the data handled by fofparse), run the command line tool on a notes.mid file outside of the python script.
You'll need to see that to write new functions for fofparse.
Hack away, friends!