Hello gang,
I have finished development on a small tool that I wrote to help me (and hopefully you) learn a little bit more about what you play and the patterns you use.
The application allows you to load a folder full of playlists (such as the VDJ \"Tracklisting\" folder) or just a selection of playlists. The application then loads all media from the playlists into a tree that allows you to see what media (song or video) followed what media and how often.
The application was written in Visual Basic.NET 2008 and I will be including the source code in case anyone wants to view and/or update the code.
What is the process for uploading this application to the Tools section of VDJ.com?
Thanks,
James
I have finished development on a small tool that I wrote to help me (and hopefully you) learn a little bit more about what you play and the patterns you use.
The application allows you to load a folder full of playlists (such as the VDJ \"Tracklisting\" folder) or just a selection of playlists. The application then loads all media from the playlists into a tree that allows you to see what media (song or video) followed what media and how often.
The application was written in Visual Basic.NET 2008 and I will be including the source code in case anyone wants to view and/or update the code.
What is the process for uploading this application to the Tools section of VDJ.com?
Thanks,
James
![](/image/56108/27668/DJPatterns.jpg)
Posté Tue 16 Feb 10 @ 2:51 pm
not sure how to load..but that may come in handy!! for tracking purposes
Posté Tue 16 Feb 10 @ 4:04 pm
Posté Tue 16 Feb 10 @ 4:16 pm
mistah_p wrote :
not sure how to load..but that may come in handy!! for tracking purposes
The FILE menu has two choices: \"Add Folder\" & \"Add Playlist(s)\". The Add Folder allows you to select a folder (obviously) and it will look for all playlists in that folder. The Add Playlist(s) allows you to select one or more playlists. You can also drag-n-drop a folder or playlists to the tree to add them.
Once you add playlists it scans them (see image below) and adds them to the list. So, for example, you can choose the VDJ "Tracklist" folder, and when that completes you can add another folder or other playlists.
The scan process is threaded so that you can cancel part way through the process. For example: I have 40 playlists and it takes a few minutes to scan through all of the them and add the songs into the tree. If this process is taking too long you can hit "cancel" and stop the process.
There is also a search function so that you don't have to scroll to find the song. (Found via the FILE menu, or CTRL+S)
This is the first iteration of this application so if there are other ideas I'm open to them, and at very least I hope this helps you do your jobs a little better.
Peace,
James
Posté Wed 17 Feb 10 @ 10:04 am
One more quick piece: I am waiting for a response back from VDJ about the coverstion of the Media "Length" (song time) from the Database XML. After that I only need to work out an install package. nbd.
If anyone wants it in advance please contact me. If you have the .NET Frameworks 3.5 installed then you only have to copy a folder (with only a few files) and run the app. It's rather simple.
Peace,
James
If anyone wants it in advance please contact me. If you have the .NET Frameworks 3.5 installed then you only have to copy a folder (with only a few files) and run the app. It's rather simple.
Peace,
James
Posté Wed 17 Feb 10 @ 12:37 pm
The tool is now available at: http://www.virtualdj.com/addons/10780/DJ_Patterns.html
I hope this is helpful to everyone, and if there are issues or requests please contact me.
The source code is also available (Visual Basic.NET 2008) in case anyone wishes to make their own changes.
Peace,
James Rose
I hope this is helpful to everyone, and if there are issues or requests please contact me.
The source code is also available (Visual Basic.NET 2008) in case anyone wishes to make their own changes.
Peace,
James Rose
Posté Fri 19 Feb 10 @ 11:03 am
DJCel,
Thanks kindly for your input, however I believe I have that issue/possability covered. If the user has the application (VDJ) installed on a different location and/or the database/xml file is not "VJ Database V6.xml" (if they are using version 5, etc) then the "File.Exists" will return false and give the user a dialog asking them to point the application to where it actually is.
..or am I missing your point?
Peace,
James
Thanks kindly for your input, however I believe I have that issue/possability covered. If the user has the application (VDJ) installed on a different location and/or the database/xml file is not "VJ Database V6.xml" (if they are using version 5, etc) then the "File.Exists" will return false and give the user a dialog asking them to point the application to where it actually is.
..or am I missing your point?
Peace,
James
Posté Fri 19 Feb 10 @ 12:42 pm
Used the link to access the tool and this is what I get:
Sorry, you don't have the necessary accreditations to view this page.
What gives?
Sorry, you don't have the necessary accreditations to view this page.
What gives?
Posté Fri 19 Feb 10 @ 8:45 pm
JamesWjRose wrote :
DJCel,
Thanks kindly for your input, however I believe I have that issue/possability covered. If the user has the application (VDJ) installed on a different location and/or the database/xml file is not "VJ Database V6.xml" (if they are using version 5, etc) then the "File.Exists" will return false and give the user a dialog asking them to point the application to where it actually is.
..or am I missing your point?
Peace,
James
Thanks kindly for your input, however I believe I have that issue/possability covered. If the user has the application (VDJ) installed on a different location and/or the database/xml file is not "VJ Database V6.xml" (if they are using version 5, etc) then the "File.Exists" will return false and give the user a dialog asking them to point the application to where it actually is.
..or am I missing your point?
Peace,
James
Yes that's i thought but apparently it doesn't do it. If i have 5min i will test in debug mode.
Posté Fri 19 Feb 10 @ 11:38 pm
kamakuakane wrote :
Used the link to access the tool and this is what I get:
Sorry, you don't have the necessary accreditations to view this page.
What gives?
Sorry, you don't have the necessary accreditations to view this page.
What gives?
It just means the program IS uploaded, but hasnt been checked by atomix. once thay give it the ok, then exp & pro will be able to download.
Posté Fri 19 Feb 10 @ 11:52 pm
DJCel,
Thanks for your input. I just tried it out again and it works fine for me, so I would REALLY appreciate if you could run the code and see why it's not working correctly for you.
I'm off to help paint a friend's apt today (the fun never ends here in NYC) but I will check back in tonight
Thanks,
James
Thanks for your input. I just tried it out again and it works fine for me, so I would REALLY appreciate if you could run the code and see why it's not working correctly for you.
I'm off to help paint a friend's apt today (the fun never ends here in NYC) but I will check back in tonight
Thanks,
James
Posté Sat 20 Feb 10 @ 8:00 am
JamesWjRose wrote :
One more quick piece: I am waiting for a response back from VDJ about the coverstion of the Media "Length" (song time) from the Database XML.
Did you ever get an answer to this?
Roy
Posté Mon 22 Feb 10 @ 3:55 pm
Hi James
I asked this question before and got this answer from support.
Songlength is written in samples, knowing the sampling rate of VirtualDJ is 44100 samples per second
Bpm (=beats per minute) is also written in samples. It's the number of samples between two following beats.
And that is all I got.
Hope this helps
Joey....
I asked this question before and got this answer from support.
Songlength is written in samples, knowing the sampling rate of VirtualDJ is 44100 samples per second
Bpm (=beats per minute) is also written in samples. It's the number of samples between two following beats.
And that is all I got.
Hope this helps
Joey....
Posté Mon 22 Feb 10 @ 4:50 pm
JamesWjRose wrote :
so I would REALLY appreciate if you could run the code and see why it's not working correctly for you.
I had to modify the code of your project (DJPattern.vbproj) because I couldn't load it. The following line was the issue:
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
and I had to write instead:
<Import Project="$(MSBuildBinPath)\Microsoft.VisualBasic.targets" />
Some errors:
Quote :
C:\Users\Domicile\Desktop\DJPatterns-Source\DJPattern\Main.vb(102) : error BC30451: The name 'filPlaylists' is not declared.
C:\Users\Domicile\Desktop\DJPatterns-Source\DJPattern\Main.vb(130) : error BC30451:The name 'filPlaylist' is not declared.
C:\Users\Domicile\Desktop\DJPatterns-Source\DJPattern\Scanner.vb(84) : error BC30451: The name 'iLoop' is not declared.
C:\Users\Domicile\Desktop\DJPatterns-Source\DJPattern\Scanner.vb(85) : error BC30451: The name 'iLoop' is not declared.
C:\Users\Domicile\Desktop\DJPatterns-Source\DJPattern\Scanner.vb(87) : error BC30451: The name 'iLoop' is not declared.
C:\Users\Domicile\Desktop\DJPatterns-Source\DJPattern\Scanner.vb(94) : error BC30451:The name 'iLoop' is not declared.
C:\Users\Domicile\Desktop\DJPatterns-Source\DJPattern\Scanner.vb(95) : error BC30451: The name 'iLoop' is not declared.
C:\Users\Domicile\Desktop\DJPatterns-Source\DJPattern\Scanner.vb(99) : error BC30451: The name 'iLoop' is not declared.
C:\Users\Domicile\Desktop\DJPatterns-Source\DJPattern\Scanner.vb(100) : error BC30451: The name 'iLoop' is not declared.
C:\Users\Domicile\Desktop\DJPatterns-Source\DJPattern\Scanner.vb(176) : error BC30451: The name 'iLoop' is not declared.
C:\Users\Domicile\Desktop\DJPatterns-Source\DJPattern\Scanner.vb(177) : error BC30451: The name 'iLoop' is not declared.
C:\Users\Domicile\Desktop\DJPatterns-Source\DJPattern\Main.vb(130) : error BC30451:The name 'filPlaylist' is not declared.
C:\Users\Domicile\Desktop\DJPatterns-Source\DJPattern\Scanner.vb(84) : error BC30451: The name 'iLoop' is not declared.
C:\Users\Domicile\Desktop\DJPatterns-Source\DJPattern\Scanner.vb(85) : error BC30451: The name 'iLoop' is not declared.
C:\Users\Domicile\Desktop\DJPatterns-Source\DJPattern\Scanner.vb(87) : error BC30451: The name 'iLoop' is not declared.
C:\Users\Domicile\Desktop\DJPatterns-Source\DJPattern\Scanner.vb(94) : error BC30451:The name 'iLoop' is not declared.
C:\Users\Domicile\Desktop\DJPatterns-Source\DJPattern\Scanner.vb(95) : error BC30451: The name 'iLoop' is not declared.
C:\Users\Domicile\Desktop\DJPatterns-Source\DJPattern\Scanner.vb(99) : error BC30451: The name 'iLoop' is not declared.
C:\Users\Domicile\Desktop\DJPatterns-Source\DJPattern\Scanner.vb(100) : error BC30451: The name 'iLoop' is not declared.
C:\Users\Domicile\Desktop\DJPatterns-Source\DJPattern\Scanner.vb(176) : error BC30451: The name 'iLoop' is not declared.
C:\Users\Domicile\Desktop\DJPatterns-Source\DJPattern\Scanner.vb(177) : error BC30451: The name 'iLoop' is not declared.
Posté Mon 22 Feb 10 @ 5:09 pm
GadgetMan & JoeyKJ
Yes I got a response back from VDJ and you were right about the value in the XML / 44100 = number of seconds.
DJCel,
Very interesting that you had to change that line... I am using Visual Studio 2008, you? Also I will check to see if any of those variables are an issue, however I use "Option Explicit On" (always!) so I don't know how that could be.... but hey, it's not like I haven't been wrong before, so I'll go take a look and see what I can see.
Thanks kindly for the feedback.
Peace,
James
Yes I got a response back from VDJ and you were right about the value in the XML / 44100 = number of seconds.
DJCel,
Very interesting that you had to change that line... I am using Visual Studio 2008, you? Also I will check to see if any of those variables are an issue, however I use "Option Explicit On" (always!) so I don't know how that could be.... but hey, it's not like I haven't been wrong before, so I'll go take a look and see what I can see.
Thanks kindly for the feedback.
Peace,
James
Posté Tue 23 Feb 10 @ 9:17 am
DJCel,
You were correct. Those variables were not explicitly declared... and yet I had Option Explicit On. Maybe I should move up to Strick. Anyway, thank you. I have corrected those issues and uploaded the new code and setup (version 1.01)
There is also a new menu that allows the user to set the database path. Not a big thing, but it can be nice to have.
The tool is at: http://www.virtualdj.com/addons/10780/DJ_Patterns.html
Peace,
James
You were correct. Those variables were not explicitly declared... and yet I had Option Explicit On. Maybe I should move up to Strick. Anyway, thank you. I have corrected those issues and uploaded the new code and setup (version 1.01)
There is also a new menu that allows the user to set the database path. Not a big thing, but it can be nice to have.
The tool is at: http://www.virtualdj.com/addons/10780/DJ_Patterns.html
Peace,
James
Posté Tue 23 Feb 10 @ 9:59 am
How about multiple drives...?
I am writing some "tools" for VDJ and from the beginning have had to consider the local database:
Set objVDJFolder = FSO.GetFolder(Shell.SpecialFolders.Item("MyDocuments") + "\VirtualDJ\")
Set objVDJDB = FSO.GetFile(strVDJPath + "VirtualDJ Database v6.xml")
As well as the database on every drive attached to the PC:
Set objDrives = FSO.Drives
For Each objDrive In objDrives
If objDrive.IsReady Then
If FSO.FileExists(objDrive.Path + "\" + "VirtualDJ Local Database v6.xml") Then
Set objVDJDB = FSO.GetFile(objDrive.Path + "\" + "VirtualDJ Local Database v6.xml")
..
I am writing some "tools" for VDJ and from the beginning have had to consider the local database:
Set objVDJFolder = FSO.GetFolder(Shell.SpecialFolders.Item("MyDocuments") + "\VirtualDJ\")
Set objVDJDB = FSO.GetFile(strVDJPath + "VirtualDJ Database v6.xml")
As well as the database on every drive attached to the PC:
Set objDrives = FSO.Drives
For Each objDrive In objDrives
If objDrive.IsReady Then
If FSO.FileExists(objDrive.Path + "\" + "VirtualDJ Local Database v6.xml") Then
Set objVDJDB = FSO.GetFile(objDrive.Path + "\" + "VirtualDJ Local Database v6.xml")
..
Posté Tue 23 Feb 10 @ 10:13 am
GadgetMan,
It is my understanding that the XML file in the "My Documents..../VirtualDJ" folder is the master database. Is this assumption incorrect? And if so what is the pattern for the data within the XML db file(s)?
Meaning: Does one xml file hold all of the info, or does the various files on each drive hold data for that drive? Or?
Thanks,
James
It is my understanding that the XML file in the "My Documents..../VirtualDJ" folder is the master database. Is this assumption incorrect? And if so what is the pattern for the data within the XML db file(s)?
Meaning: Does one xml file hold all of the info, or does the various files on each drive hold data for that drive? Or?
Thanks,
James
Posté Tue 23 Feb 10 @ 10:48 am
There is no master database. If the file exists on drive C it will be in the database on drive C (normally in the VDJ folder).
If the file exists on drive D it will be in the databse on drive D (always in the root folder).
The idea behind this is that you could take your external hard drive to a venue where VDJ was aleady installed, plug in your drive and have all your songs as if they were on your own setup (ie BPM, cue points, etc.)
So it is very possible that a playlist may contain tracks from multiple drives so you should consider this. You will see from my code extract that I start by cycling through the attached drives and if they are ready, see if there is a database file in its root.
Then what I do is get the file object for the VDJ database file and pass that as the parameter to my data extraction functions as it will work on whatever database file is referenced in the object!
Feel free to grab and use as you wish.
Cheers,
Roy
If the file exists on drive D it will be in the databse on drive D (always in the root folder).
The idea behind this is that you could take your external hard drive to a venue where VDJ was aleady installed, plug in your drive and have all your songs as if they were on your own setup (ie BPM, cue points, etc.)
So it is very possible that a playlist may contain tracks from multiple drives so you should consider this. You will see from my code extract that I start by cycling through the attached drives and if they are ready, see if there is a database file in its root.
Then what I do is get the file object for the VDJ database file and pass that as the parameter to my data extraction functions as it will work on whatever database file is referenced in the object!
Feel free to grab and use as you wish.
Cheers,
Roy
Posté Tue 23 Feb 10 @ 11:43 am
Roy,
Thanks. I will update the code asap. Thanks for the heads up.
UPDATE: I was just reviewing my XML files and the Configuration within VDJ and now I'm not so sure you are correct. (but hey, I could be wrong) in the VDJ folder there is a file "VirtualDJ Database v6.xml", my music drive (K:) and the file there is "VirtualDJ Database v5.xml" I just ran a BMP analize and the xml file in the VDJ folder updated but the one on my K: drive did not.
Also if you look into the config options, then select the "Browser" tab there is a drop down combo box for "Database" and in my instance it shows only the option for the C: drive.
Feel free to tell me I'm wrong or I'm missing something. Should we escalate this to the support staff?
Thanks for your time.
James
Thanks. I will update the code asap. Thanks for the heads up.
UPDATE: I was just reviewing my XML files and the Configuration within VDJ and now I'm not so sure you are correct. (but hey, I could be wrong) in the VDJ folder there is a file "VirtualDJ Database v6.xml", my music drive (K:) and the file there is "VirtualDJ Database v5.xml" I just ran a BMP analize and the xml file in the VDJ folder updated but the one on my K: drive did not.
Also if you look into the config options, then select the "Browser" tab there is a drop down combo box for "Database" and in my instance it shows only the option for the C: drive.
Feel free to tell me I'm wrong or I'm missing something. Should we escalate this to the support staff?
Thanks for your time.
James
Posté Tue 23 Feb 10 @ 12:10 pm