The main goal is to create a virtual Radio DJ.
foo_auto_dj_0.9 (http://ul.to/bxy9oz)
Usage:
Create one playlist called "Auto*", which will be managed by the plugin, although you can also drop in and remove tracks manually.
Basically it will sort them by BPM, remove played tracks and insert new one, with each track having an individual priority based on rating, age and last played.
Create playlists or autoplaylists for all tracks you want the Auto DJ to consider playing, and name them like:
"Pool X*" with x being the base priority of this pool. For example you could assign different priorities to different genres.
"New X*" for tracks you want to boost in priority based on their time since added.
Create a custom column with %priority% to display the probability of each track being chosen.
The zip contains an Excel sheet with the exact calculations.
Recommended:
foo_playcount.dll (Offical Playback Statistics and Rating) (http://www.foobar2000.org/components/view/foo_playcount)
OpenCL compatible GPU.
It should be able to fallback to CPU, but be sure to enable the light mode and it's not really tested.
Also please don't be surprised by crashes, this is my first plugin.
TODO:
The scanner will already store similarity information, but it's not yet used.
A beatmixing dsp, for now use simple crossfading.
OpenCL compatible GPU.
Any reason why it uses GPU?
OpenCL compatible GPU.
Any reason why it uses GPU?
Because CPU is too slow? Also the CPU can already prepare the next steps, while the GPU is busy.
It's only used during scanning, for autocovariance.
With an ATI 4850 the tough GPU part takes just a second or so, depending on length of track. If your card is too slow, it might trigger the windows display driver reset. Then you can enable the light processing mode in the menu, which only affects the BPM accuracy, not the ReplayGain.
Total scanning is ~21 x realtime, with an entry level Core 2 Duo.
I get this error:
Failed to load DLL: foo_auto_dj.dll
Reason: This component is missing a required dependency, or was made for different version of foobar2000.
Installed the component through Preferences and added all the other files to Foobar's root folder. I tried adding them to the component folder instead, without any luck. Also tried installing it in \Components, no luck there.
Anyhow, got an nVidia GeFore 8800GT GPU, but I tried removing the OpenCL.dll file, as you said it would fall back to CPU. Didn't help. I'm pretty sure it supports openCL. Do you need to isntall anything else or tweak something?
Because CPU is too slow? Also the CPU can already prepare the next steps, while the GPU is busy.
You do realise in the SDK, FB2K has a thread API for background processes?
I get this error:
Failed to load DLL: foo_auto_dj.dll
Reason: This component is missing a required dependency, or was made for different version of foobar2000.
Installed the component through Preferences and added all the other files to Foobar's root folder. I tried adding them to the component folder instead, without any luck. Also tried installing it in \Components, no luck there.
Anyhow, got an nVidia GeFore 8800GT GPU, but I tried removing the OpenCL.dll file, as you said it would fall back to CPU. Didn't help. I'm pretty sure it supports openCL. Do you need to isntall anything else or tweak something?
Have you ever run any OpenCL code? Maybe it needs special drivers?
I'm also not sure how compatible the binary is. I thought it was like java bytecode, i.e. run everywhere or could it be device specific?
It doesn't work here, too (Failed to load DLL: foo_auto_dj.dll, reason: This component is missing a required dependency, or was made for different version of foobar2000.). I'm on a nvidia 250gts. Furthermore, it would be nice if you could use the upload forum of this board instead of a file hoster.
I guess you're missing drivers.
ATI has two packages, for example, one with and one without OpenCL driver.
Even the CPU mode needs an OpenCL driver, not sure where I got one, probably some SDK.
Sorry, I couldn't find a way to attach a file - looks like it was the wrong subforum...
OpenCL should be supported by the driver installed: http://dl.dropbox.com/u/232093/opencl.png (http://dl.dropbox.com/u/232093/opencl.png)
The upload forum is here: http://www.hydrogenaudio.org/forums/index.php?showforum=35 (http://www.hydrogenaudio.org/forums/index.php?showforum=35)
You can upload the file there and link to it from this thread (for discussion).
A DLL is missing, not a driver. It is probably the same reason as here (http://www.hydrogenaudio.org/forums/index.php?s=&showtopic=83748&view=findpost&p=723480). The component requires MSVCR100.DLL.
Wouldn't static linking solve the issue?
Edit: Seems like I only have msvcr100_clr0400.dll in my system32/syswow64 folder.
Wouldn't static linking solve the issue?
Yes, it would.
Any reason why it uses GPU?
Because CPU is too slow? Also the CPU can already prepare the next steps, while the GPU is busy.
It's only used during scanning, for autocovariance.
In other words, the function of this component is too intense for my P4 3.4GHz/Radeon X800 to handle?
(Well, I guess it might be, considering you are trying to scan the entire media library.)
Ah you're right. I always forget these are not standard dlls. I'll try to make a new build without these dependencies, or include them, and upload to the upload forum.
Any reason why it uses GPU?
Because CPU is too slow? Also the CPU can already prepare the next steps, while the GPU is busy.
It's only used during scanning, for autocovariance.
In other words, the function of this component is too intense for my P4 3.4GHz/Radeon X800 to handle?
(Well, I guess it might be, considering you are trying to scan the entire media library.)
It's not necessarily scanning the entire library, but it's calculating the autocorrelation of an entire track, which takes longer than a minute on the CPU and a few seconds on the GPU.
Is the CPU auto-correlation using fft?
Is the CPU auto-correlation using fft?
No, I could never get the Wiener–Khinchin transform to give the same results as a naive autocorrelation, and doing a FFT of the entire track is still way too slow.
And please don't expect it to be magical, it works very well with Dance and Pop, but guitars for example can throw it off.
Seems I can't edit my first post. Get the new version here:
http://www.hydrogenaudio.org/forums/index....ost&id=6183 (http://www.hydrogenaudio.org/forums/index.php?act=attach&type=post&id=6183)
I also switched to Just In Time compilation of the OpenCL function, so it should work on most hardware.
Playlist AUTO. Foobar playing the first song, the now playing icon in column “Playing” is visible. Song is ended, foobar automatically playing second song, but now icon in column “Playing” is lost. If I go to the next song with “next” button or with shortcut, all is ok, icon is visible all time.
Sorry, my English is so bad.
Playlist AUTO. Foobar playing the first song, the now playing icon in column “Playing” is visible. Song is ended, foobar automatically playing second song, but now icon in column “Playing” is lost. If I go to the next song with “next” button or with shortcut, all is ok, icon is visible all time.
Sorry, my English is so bad.
Is this a special UI element? The standard "Selection Properties" and "Album Art Viewer", always show what's currently playing as long as nothing else is selected. The waveform seekbar also works.
But I might guess where the problem is:
The SDK function
static_api_ptr_t<playlist_manager>()->get_playing_item_location(&playingPlaylist, &playingIndex);does not seem to work reliably. Maybe some developer can help me here? Could I be doing something that confuses foobar? I'm obviously removing, adding and sorting the auto playlist a lot, but presumably only from the main thread...
I spoke about this icon (now playing indicator):
(http://img80.imageshack.us/img80/7627/93931065.jpg)
Got the plugin working now. It seems to crash a lot. Haven't tried it that much, but two out of three times, both with single nd album mode.
Got it to analyze one track, though, but it wrote the wrong BPM. The dialog with the analysis reported 129-ish, but the written BPM was 21.5.
Also, on another note, Foobar has already got pretty good ReplayGain support (Component included in the installer) and foo_bpm is both fast and (mostly) stable. You could look into using those?
Well, it doesn't crash for me. You can pm me the minidump, if there is one.
With the original ReplayGain I was tempted to touch the volume control for one in five tracks, now it's maybe one in twenty, and it's also faster to do everything in one go, but you can choose it from the menu if you prefer. I still have foo_bpm installed, it works very different, so if it works better for you, then just use it and keep the BPM tags.
Personally I like the automatic mode, so everything gets scanned before the first play without doing anything.
If the Pop mode seems a little aggressive and often halves the BPM, then just enable "Always choose closest to median", for now, which will put the BPM in the correct range.
Cannot make this plugin work
file://xxxx.mp3, file length = 391.7647166, sample rate = 44100
Loaded 8638k samples.
Failed to allocate buffers of 33MB. Trying light mode.
Failed to allocate buffers of 19MB. Quitting.
Total time: 25s (16 x realtime)
Cannot make this plugin work
file://xxxx.mp3, file length = 391.7647166, sample rate = 44100
Loaded 8638k samples.
Failed to allocate buffers of 33MB. Trying light mode.
Failed to allocate buffers of 19MB. Quitting.
Total time: 25s (16 x realtime)
You could try it on a very short track, but that doesn't solve the problem.
What's your hardware, a mobile GPU?
I'll add a check of the max buffer size and use the CPU if too small.
You should also be able to use the DJ functionality without touching the scanning part.
No, I use radeon HD4850. GPU-Z says that I have OpenCL. PM me if you would like me to do some more advanced debuging.
And the new version didn't change anything - still crashes on album scan, and still no memory for track scan.
No, I use radeon HD4850. GPU-Z says that I have OpenCL. PM me if you would like me to do some more advanced debuging.
And the new version didn't change anything - still crashes on album scan, and still no memory for track scan.
That's weird, as it's the same card. Well, the new version (http://www.hydrogenaudio.org/forums/index.php?act=attach&type=post&id=6187) has a lot of error checking and should show exactly where an OpenCL related problem occured, in the console.
The new version crashes even on analyzing single track.
The new version crashes even on analyzing single track.
Finally found and fixed not only the crashes, but the cause: When installing the component to the user directory, the OpenCL sourcecode file could no longer be found. It is now embedded in the dll.
Get it here: foo_auto_dj_0.9.4.zip (http://www.hydrogenaudio.org/forums/index.php?act=attach&type=post&id=6194).
Yes, it finally works. But the BPM walues are wrong?
Loaded 6993k samples * 2 channels.
Channel[0] kernel took 3s. (541 GFLOP/s, 54 GB/s).
Channel[1] kernel took 3s. (542 GFLOP/s, 54 GB/s).
dB(ISO226) = -13.3818760 -> ReplayGain = -8.5807133
bpm[0] = 19.1651611 -[x6]-> 114.9909666 (-77.1875548)
bpm[1] = 114.9863102 (-77.1875548)
σ = 21595.8365092, max = 179166.1093750 = 8.2963264σ
Moments = 0.3270631, 0.1060129, 1.4457623, 5.2048976, 19.1275056, 466380154.5339364, 3.7956916, 148.1553680,
BPM[0] = 114.9786322 = 1.0000000 * bpm[0] -> 114.9786322
BPM[0] = 114.9786322 = 1.0000000 * bpm[1] -> 114.9786322
Looks like Dance: BPM = 229.9580995
Total time: 31s (10 x realtime)
According to VirtualDJ this track has 115BPM.
Since bpm[0] and bpm[1] are both half of the 'dance' estimate, I can add a rule which will correct this and similar cases.
If you know that your tracks have a limited BPM range, enter the median BPM (or geometric mean) in the options and enable "always choose closest to median". This will double or half the result appropriately. E.g. with median = 130, all results will lie between ~210 and ~80.
Here are a few examples of how the BPM detection works:
The most time consuming task is creation of a spectrogram of the entire track, which is also used for replay gain estimation.
The autocorrelation of the raw PCM signal is done at the same time on the GPU, so it's practically free.
It goes from very easy to pretty difficulty:
(http://img89.imageshack.us/img89/9553/autocorrelationultrafas.png)
A very fast track, with a very clear 240 BPM. Normalizing this one to 120 BPM would be wrong.
(http://img717.imageshack.us/img717/2854/autocorrelationdance2.png)
Techno with 138 BPM. This is the threshold where there are no longer 100% correct answers, as we go from pure beat detection to "rhythm detection".
(http://img38.imageshack.us/img38/8513/autocorrelationdance3.png)
Still dance, but with some guitar parts. This is already a pretty tough call, and kinda subjective. The lyrics are at 85 BPM, but the strongest beat is at 170.
(http://img713.imageshack.us/img713/8011/autocorrelationpop.png)
Girlfriend from Avril Lavigne. Pop music is usually in 4/4 meter, so the best BPM estimate is 4 * fundamental = 164 BPM.
(http://img138.imageshack.us/img138/7561/autocorrelationpoprock.png)
Sk8er Boi from Avril Lavigne. Pop-Punk-Rock; very hard to decide between 75 and 150 BPM.
(http://img717.imageshack.us/img717/3455/autocorrelationmetal.png)
Power Metal with 200 BPM, but 100 or even 400 are not absolutely wrong - pretty much all the same.
Maybe I'll add a window or UI component to display this and other stuff, to aid in generating rules to get the correct BPM, or simply for visualization.
The moments of these functions, i.e. mean, variance, skewness and kurtosis, should make for a good similarity measure between all kind of tracks and genres.
Unfortunately, I got a few things wrong, so the next version will calculate new moments. ><
0.9.5 gives me the same BPM:
file://C:\07-royksopp-what_else_is_there.mp3
Loaded 6993k samples * 2 channels.
Channel[0] kernel took 3s. (540 GFLOP/s, 54 GB/s).
Channel[1] kernel took 3s. (541 GFLOP/s, 54 GB/s).
dB(ISO226) = -13.3818760 -> ReplayGain = -8.5807133
bpm[0] = 57.4962848 -[x4]-> 229.9851391 (-68.5242509)
bpm[1] = 229.3119739 (-68.5242509)
σ = 0.0251324, max = 0.2085064 = 8.2963264σ
Moments = 0.1635099, 0.0027788, 6.0836700, 84.2306887, 0.0000223, 0.0006316, 3.7956916, 148.1553680,
BPM[1] = 19.1623671 = 0.0833333 * bpm[0] -> 229.9484047
BPM[1] = 19.1623671 = 0.0833333 * bpm[1] -> 229.9484047
Looks like Dance: BPM = 229.9580995
Failed:Sharing violation
And small issue - if the track is playing plugin cannot update the tags. I suppose it should do it (atleast foobar itself can update tags).
What are BPM[0] and BPM[1] and why does the plugin select the first value in full mode and the second one in light mode?
file://C:\Users\Elenhil\Music\300\01 - To Victory.flac
Loaded 3411k samples * 2 channels.
Channel[0] kernel took 2s. (346 GFLOP/s, 35 GB/s).
Channel[1] kernel took 2s. (347 GFLOP/s, 35 GB/s).
dB(ISO226) = -17.1026917 -> ReplayGain = -4.8598976
bpm[0] = 20.0034139 -[x4]-> 80.0136558 (-81.6472195)
bpm[1] = 140.4535746 (-133.0145831)
σ = 6230.2618556, max = 52486.2031250 = 8.4243976σ
Moments = 0.0638778, 0.0044562, 2.4007020, 11.7108559, 3.3358612, 38816162.7896339, 3.5127242, 106.0273694,
BPM[0] = 20.0001613 = 0.2500000 * bpm[0] -> 80.0006451
BPM[1] = 181.1006405
Looks like Pop: BPM = 80.0006451
Total time: 7s (23 x realtime)
file://C:\Users\Elenhil\Music\300\01 - To Victory.flac
Loaded 3411k samples * 2 channels.
dB(ISO226) = -17.1026917 -> ReplayGain = -4.8598976
bpm[0] = 20.0034136 -[x4]-> 80.0136542 (-81.6465608)
bpm[1] = 140.4535761 (-133.0138938)
Total time: 7s (23 x realtime)
After the above diagrams are calculated, a few peaks are selected and compared with each other, trying to find the best value.
This is still a work in progress, and while rules are added or simplified, it's possible that one track gets fixed but others become wrong.
bpm[0] and bpm[1] are based on the spectrogram (the red line), which is transformed once more, to remove the bias.
bpm[0] is the first significant multiple of the fundamental peak.
bpm[1] is the first significant peak. bpm_dance is an alternate first peak. The value in brackets, .e.g. (-81.6472195) is the height of the peak and is taken into account when in doubt.
Both are influenced by the median BPM setting in the options: a higher value will lower the threshold for selecting the peaks, increasing the chance to pick a higher BPM peak.
BPM[0] and BPM[1] and BPM_DANCE are similarly based on the raw signal (the blue line) and are not available in light mode.
So light mode and median BPM setting will influence the results as well as the peak finding algorithm which can change from version to version.
Well it crashes alot. Haven't got it to analyze one single file yet in either normal nor light mode.
Didn't try it out much yet. Still need to understand the concept really.
Where does it save analysed information - In tags or it's own database?
Since you seem to have a beatmixing DSP on your todo-list (which would be totally awesome), have you considered making a pitch-analyser as well, to create harmonic playlists easily?
Well it crashes alot. Haven't got it to analyze one single file yet in either normal nor light mode.
Didn't try it out much yet. Still need to understand the concept really.
Where does it save analysed information - In tags or it's own database?
Since you seem to have a beatmixing DSP on your todo-list (which would be totally awesome), have you considered making a pitch-analyser as well, to create harmonic playlists easily?
Can you send me the crash log? In fact just the version and crash location is usually enough.
It saves the BPM to the %BPM% tag. And the supposed similarity information to the %MOMENTS% tag.
The ReplayGain is stored the usual way and is compatible to the original ReplayGain.
Everything else is kept in a runtime database, like 60 recent titles and 20 recent artists, which are banned. If you have artists which should never be banned, you can enter them in advanced config.
To filter out different versions of the same track, the titles must match up exactly, so I try to move the cover/version information into a %VERSION% tag, and use custom titleformatting to display it.
I'm not sure what you mean with harmonic playlists. Like, a song with high pitched lyrics followed by a similar song, etc.?
The thing, is I'm not really into DJing, more into signal analysis.
So I'm not sure how to do beatmixing properly. If we speed up or slow down a track, the pitch will change slightly. I suppose that's ok? Then how (when) do we actually return to the correct speed?
I'll probably do a more simple initial or alternate version which will approximately match up the beats without changing the speed, and to sort out even more fundamental stuff, like some tracks already fading out "naturally", while others ending abruptly. Making transitions of approx. the same length and with constant loudness should be possible, but it might be boring? Should there be some alternatives, like hard cuts? Also some tracks, like very long ones, might benefit from an "end after xx:xx" hint (tag).
I'm not sure what you mean with harmonic playlists. Like, a song with high pitched lyrics followed by a similar song, etc.?
More likely key detection. So you could create playlists with same and related keys. I'm guessing, but that's potentially quite handy if it can be done well.
C.
ps. I had a look at the spreadsheet, but it was hard to understand quite what it's doing (without any idea as to its particular aims). Can you, outline in general terms what the approach is. For example, hotness tries to tell you which tracks are currently big hits with you, DAR attempts to rate tracks on a level playing field negating such factors as track age and track duration. What is Auto DJ doing?
I'm not sure what you mean with harmonic playlists. Like, a song with high pitched lyrics followed by a similar song, etc.?
More likely key detection. So you could create playlists with same and related keys. I'm guessing, but that's potentially quite handy if it can be done well.
C.
ps. I had a look at the spreadsheet, but it was hard to understand quite what it's doing (without any idea as to its particular aims). Can you, outline in general terms what the approach is. For example, hotness tries to tell you which tracks are currently big hits with you, DAR attempts to rate tracks on a level playing field negating such factors as track age and track duration. What is Auto DJ doing?
It's like the reverse. It'll not rate tracks by how they are played but play them by their rating and other data.
The priority in the spreadsheet shows the evolution of how likely a track is to be added to the auto playlist after it was last played. The actual probability is
priority / sum of all priorities.
Higher rated tracks as well as new tracks have a shorter cool down time and higher limit probability. Also tracks are unlikely to be played at exactly the same time of day as before.
I've taken a look at the wikipedia articles on Harmonic mixing and Beatmatching. Looks like you're supposed to change the speed independent of the pitch. Ah, difficult. Is there a good free algorithm which can do that? As for the key detection; it would be easy if you already have the tags, but finding the dominant key looks like quite the challenge.
but finding the dominant key looks like quite the challenge.
I think so.
So, when you're talking about rating, are you talking about the rating that people have manually applied to their songs? Like 4 stars?
C.
I'm not sure what you mean with harmonic playlists. Like, a song with high pitched lyrics followed by a similar song, etc.?
More likely key detection.
That's what I meant, but it was late and I was tired
I'm not sure what you mean with harmonic playlists. Like, a song with high pitched lyrics followed by a similar song, etc.?
If you do key-detection, you will find that songs with the same (or compatible) key usually fits "harmonically" together.
There are some great examples here (http://www.harmonic-mixing.com/HowTo.aspx).
So I'm not sure how to do beatmixing properly. If we speed up or slow down a track, the pitch will change slightly. I suppose that's ok? Then how (when) do we actually return to the correct speed?
From a programming perspective that's probably where things get complicated. There are tools that allows speed-change without pitch-shift, but they vary much in quality. zplane (http://www.zplane.de/index.php?page=description-elastique-dj) has some libraries available that should do it for you, but they'll probably cost you. They also have a tool (http://www.zplane.de/index.php?page=description-tonart) for key detection.
You could also take a look at Mixmeister (http://www.mixmeister.com/) to see how they line up things. It automatically finds the best overlapping of tracks and does a smooth transition of tempo-change through the transition and revert to the initial tempo outside of the transition.
You could take a look at this project also:
http://www.sonicvisualiser.org/ (http://www.sonicvisualiser.org/)
http://www.sonicvisualiser.org/features.html (http://www.sonicvisualiser.org/features.html)
# Run feature-extraction plugins to calculate annotations automatically, using algorithms such as beat trackers, pitch detectors and so on.
...
# Time-stretch playback, slowing right down or speeding up to a tiny fraction or huge multiple of the original speed while retaining a synchronised display.
Distributed under the GNU General Public License (v2 or later) and available for Linux, OS/X, and Windows.
C.
file://C:\Users\Elenhil\Music\Alan Stivell\1971 - Renaissance Of The Celtic Harp\05 - Gaeltacht.flac
Loaded 24975k samples * 2 channels.
Failed:bad allocation
Not sure if it's a bug or feature. I've configured foobar to continue playback of tracks after restart. But if I restart foobar a track it gets removed from the autodj list and playback goes to the next track. I think it should contiune the last played track. (autodj 0.9.9)
Not sure if it's a bug or feature. I've configured foobar to continue playback of tracks after restart. But if I restart foobar a track it gets removed from the autodj list and playback goes to the next track. I think it should contiune the last played track. (autodj 0.9.9)
The track was removed on shutdown because it was stopped, but the funny thing is that foobar still saved the playtime and later "continued" playing the next song from this time on. Will be fixed in the next version.
is there a public link where i can download the current version? all links seem to be broken
//edit: sorry, i got the link http://www.hydrogenaudio.org/forums/index....mp;#entry734118 (http://www.hydrogenaudio.org/forums/index.php?showtopic=84916&st=0&p=734118&#entry734118)
the features sound impressive!
unfortunately foobar stucks every time trying to dragndrop an mp3-file to any playlist.
this happens straight after installing the component and creating 3 playlists, called AutoPlaylist, Pool Alternative, Pool Electronic
this is my console's view
Warning sscanf = 0
.Warning sscanf = 0
.playlist[6] = "New 201010"
playlist[7] = "New 201011"
playlist[8] = "New 201012"
playlist[14] = "Auto"
Warning sscanf = 0
.Warning sscanf = 0
.
Pool update: ptr_diff = 240, nodes = 5, items = 782
max. age in "new" pool: 14963 days
Startup time : 0:03.378734
AutoDJ: No more tracks with non-zero priority!
working without "new"-playlists, didnt change anything. when adding songs, foobar hangs in processing-files-window and foobar2000.exe-process has to be stopped.
i'm going to test around again tomorrow, but any help would be helpful!
anyway, nice component, keep goin!
greetz, dls
the troubles i had yesterday have been on my win7-machine with foobar 1.1.1.
was trying the component on another pc with windows xp & foobar2000 1.1.1 installed...
under these conditions foobar doesnt load the component and says...
...this component is missing a required dependency, or was made for different version...
but it seems, this is because of missing opencl compatible cpu...
Here's the new (and probably final) version 1.0 (http://www.hydrogenaudio.org/forums/index.php?act=attach&type=post&id=6279).
@delusion:
The lock-ups should be gone, but you have to put the relative priority in the playlist name, like: "Pool 10 Alternative", "Pool 15 Electronic", "New 100". I guess it's kind of ugly and non-intuitive.
The "New" playlist only modifies the entries of existing pools by their age, so a single one should usually be enough.
There's now a context menu command for creating a number of example playlists, to be used as a starting point after installation.
It doesn't look like I'll make the beatmixing dsp component, but here's my preferred crossfading setup, using Continuator (http://www.hydrogenaudio.org/forums/index.php?showtopic=18703):
(http://img526.imageshack.us/img526/9093/dspu.png)
(http://img828.imageshack.us/img828/4287/continuator.png)
I have just tried 1.0 and it still causes a full system lockup when I run analyse.
I'm unable to save a screenshot, or any debug info as it locks up.
Here are the system specs:
http://imgur.com/X3fSk (http://imgur.com/X3fSk)
And the foobar report:
http://pastebin.com/EQEJMaYP (http://pastebin.com/EQEJMaYP)
I have just tried 1.0 and it still causes a full system lockup when I run analyse.
I'm unable to save a screenshot, or any debug info as it locks up.
Here are the system specs:
http://imgur.com/X3fSk (http://imgur.com/X3fSk)
And the foobar report:
http://pastebin.com/EQEJMaYP (http://pastebin.com/EQEJMaYP)
Does the "light mode" work, or very short tracks?
Your GPU can probably not process average length tracks in under two seconds. In that case Windows will (try to) reset the display driver: WDDM Timeout (http://www.microsoft.com/whdc/device/display/wddm_timeout.mspx).
You can increase that limit with registry keys. I've set it to 60s, to be able to run more complex kernels.
Does the "light mode" work, or very short tracks?
Your GPU can probably not process average length tracks in under two seconds. In that case Windows will (try to) reset the display driver: WDDM Timeout (http://www.microsoft.com/whdc/device/display/wddm_timeout.mspx).
You can increase that limit with registry keys. I've set it to 60s, to be able to run more complex kernels.
Light mode works, but GPU doesn't. Even in CPU only mode, the sound stutters while the CPU is processing foo_auto_dj.
I noticed when in GPU mode that Bandwidth and clock speed are coming up as 0 GB/s and 0 MHz respectively.
Has anyone successfully managed to use an ATI card rather than an nVidia card?
Has anyone successfully managed to use an ATI card rather than an nVidia card?
Yest it works flawlessly on HD4850. Unfortunately there is a still bug with the remembering of the last played track/position. How to reproduce it:
1. Foobar must resume playback after restart and autodj must work.
2. Start playing music.
3. Restart foobar during playback of the first track.
Result: foobar resumes playback of the track.
4. Start playing music and wait until foobar jumps to second/third/next track (you may jump to the end of song but foobar must switch track himself).
5. Restart foobar.
Result: foobar does not resume playback but remembers last track.
Iya, why you're going to discontinue the development? What about bugs? This plugin is so promising...
I got weird values with v.1 like 4.797e+006 bpm...
Can I get a clarification on what "ERROR: bad allocation" means and what would cause it? The foobar console is not very helpful either.
For debugging purposes, here is the relevant info from foobar's console:
num_platforms = 1
num_devices = 1
device[0] NAME = GeForce GTX 460 SE, VENDOR = NVIDIA Corporation
Choosen OpenCL Device Info:
NAME = GeForce GTX 460 SE
VENDOR = NVIDIA Corporation
VERSION = OpenCL 1.0 CUDA
DRIVER_VERSION = 266.58
ENDIAN_LITTLE = 1
EXECUTION_CAPABILITIES: NATIVE_KERNEL = 0
EXTENSIONS = cl_khr_byte_addressable_store cl_khr_icd cl_khr_gl_sharing cl_nv_d3d9_sharing cl_nv_d3d10_sharing cl_khr_d3d10_sharing cl_nv_d3d11_sharing cl_nv_compiler_options cl_nv_device_attribute_query cl_nv_pragma_unroll cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_fp64
PROFILE = FULL_PROFILE
TYPE: CPU = 0, GPU = 4, ACCELERATOR = 0, DEFAULT = 0
ADDRESS_BITS = 32
GLOBAL_MEM_CACHE_SIZE = 98304
GLOBAL_MEM_CACHE_TYPE: NONE = 0, READ_ONLY = 0, READ_WRITE = 2
GLOBAL_MEM_CACHELINE_SIZE = 128
GLOBAL_MEM_SIZE = 1041694720 = 993 MiB
MAX_MEM_ALLOC_SIZE = 260423680 = 248 MiB
LOCAL_MEM_SIZE = 49152 = 48 KiB
LOCAL_MEM_TYPE: LOCAL = 1, GLOBAL = 0
MAX_CLOCK_FREQUENCY = 1296 MHz
MAX_CONSTANT_BUFFER_SIZE = 65536 = 64 KiB
MAX_PARAMETER_SIZE = 4352 = 4 KiB
MAX_WORK_ITEM_DIMENSIONS = 3
MAX_WORK_ITEM_SIZES = [1024 | 1024 | 64]
PREFERRED_VECTOR_WIDTH_CHAR = 1
PREFERRED_VECTOR_WIDTH_SHORT = 1
PREFERRED_VECTOR_WIDTH_INT = 1
PREFERRED_VECTOR_WIDTH_LONG = 1
PREFERRED_VECTOR_WIDTH_FLOAT = 1
PREFERRED_VECTOR_WIDTH_DOUBLE = 1
PROFILING_TIMER_RESOLUTION = 1000ns
QUEUE_PROPERTIES = OUT_OF_ORDER_EXEC_MODE_ENABLE = 1
SINGLE_FP_CONFIG: DENORM = 1, ROUND_TO_ZERO = 8, ROUND_TO_INF = 0, FMA = 0
Building OpenCL kernel from source.
Successfully saved binary kernel to C:\Users\Asus\AppData\Roaming\foobar2000\kernel.bin
Analyzing...
Kernel time = 0 s
GPU performance = 0 GFLOP/s, bandwidth = 0 GB/s
Trying to analyze a handful of tracks with the 1.01-version crashes foobar2000:
Illegal operation:
Code: C0000005h, flags: 00000000h, address: 21F2D78Fh
Access violation, operation: read, address: F80C315Eh
Call path:
threaded_process thread
Code bytes (21F2D78Fh):
21F2D74Fh: 00 01 44 24 18 01 44 24 28 89 7A 08 E9 F1 FE FF
21F2D75Fh: FF 8D 44 24 44 50 52 E8 B5 F8 FF FF 83 C4 08 5F
21F2D76Fh: 5E 5D 5B 81 C4 44 01 00 00 C3 CC CC CC CC CC CC
21F2D77Fh: CC 81 EC 18 01 00 00 53 55 8B AC 24 24 01 00 00
21F2D78Fh: 8B 45 00 8B 08 83 79 40 00 56 57 0F 84 FB 00 00
21F2D79Fh: 00 80 BC 24 30 01 00 00 00 0F 84 ED 00 00 00 8D
21F2D7AFh: 54 24 18 55 52 E8 67 F8 FF FF 83 C4 08 83 7D 04
21F2D7BFh: 00 C7 44 24 10 00 00 00 00 0F 86 AF 00 00 00 8D
Stack (21F0F004h):
21F0EFE4h: 00000000 FFFFFD34 000002E4 FFFFFD34
21F0EFF4h: 000002CC 00000019 00000000 00000000
21F0F004h: 00000001 2246A240 00000000 00000000
21F0F014h: 00000000 00000000 00000000 00000000
21F0F024h: 00000000 00000000 00000000 00000000
21F0F034h: 00000000 00000000 00000000 00000000
21F0F044h: 00000000 00000000 00000000 00000000
21F0F054h: 00000000 00000000 00000000 00000000
21F0F064h: 00000000 00000000 00000000 00000000
21F0F074h: 00000000 00000000 00000000 00000000
21F0F084h: 00000000 00000000 00000000 00000000
21F0F094h: 00000000 00000000 00000000 00000000
21F0F0A4h: 00000000 00000000 00000000 21F1ECB9
21F0F0B4h: 22460C60 00064000 00000000 21F0F0CC
21F0F0C4h: 2224EF89 1AD860E0 00000000 00000000
21F0F0D4h: 22460C60 00064000 21F0F0C8 228B4A54
21F0F0E4h: 21F0F944 222560A0 19187F8C FFFFFFFE
21F0F0F4h: 2224EF89 21F6AAAB 00000000 228B4A10
21F0F104h: 21F67299 00000000 21F0F120 00000001
21F0F114h: 228B4A10 00000000 228B4A10 00000000
Registers:
EAX: F80C315E, EBX: 2246A240, ECX: 21F0F2C4, EDX: 00000001
ESI: 00000000, EDI: 21F0F2C4, EBP: F80C315E, ESP: 21F0F004
Crash location:
Module: nvcuda
Offset: 1D78Fh
Symbol: "cuParamSetSurfRef" (+1AD6Fh)
Loaded modules:
foobar2000 loaded at 00070000h - 00260000h
ntdll loaded at 77260000h - 773E0000h
kernel32 loaded at 76460000h - 76570000h
KERNELBASE loaded at 76710000h - 76756000h
COMCTL32 loaded at 70CC0000h - 70E5E000h
msvcrt loaded at 74E20000h - 74ECC000h
GDI32 loaded at 76760000h - 767F0000h
USER32 loaded at 75DA0000h - 75EA0000h
ADVAPI32 loaded at 76C90000h - 76D30000h
sechost loaded at 768B0000h - 768C9000h
RPCRT4 loaded at 76B10000h - 76C00000h
SspiCli loaded at 74DC0000h - 74E20000h
CRYPTBASE loaded at 74DB0000h - 74DBC000h
LPK loaded at 76B00000h - 76B0A000h
USP10 loaded at 76810000h - 768AD000h
SHLWAPI loaded at 76140000h - 76197000h
DSOUND loaded at 74340000h - 743B2000h
ole32 loaded at 75B80000h - 75CDC000h
WINMM loaded at 745E0000h - 74612000h
POWRPROF loaded at 71E70000h - 71E95000h
SETUPAPI loaded at 768D0000h - 76A6D000h
CFGMGR32 loaded at 761A0000h - 761C7000h
OLEAUT32 loaded at 761D0000h - 7625F000h
DEVOBJ loaded at 767F0000h - 76802000h
UxTheme loaded at 714B0000h - 71530000h
SHELL32 loaded at 74ED0000h - 75B1A000h
zlib1 loaded at 5A4C0000h - 5A4D4000h
shared loaded at 6FDF0000h - 6FE1B000h
imagehlp loaded at 75FE0000h - 7600A000h
dbghelp loaded at 733B0000h - 7349B000h
COMDLG32 loaded at 75D10000h - 75D8B000h
Secur32 loaded at 71D50000h - 71D58000h
CRYPT32 loaded at 76020000h - 7613D000h
MSASN1 loaded at 75D90000h - 75D9C000h
gdiplus loaded at 6E9B0000h - 6EB40000h
IMM32 loaded at 75B20000h - 75B80000h
MSCTF loaded at 76D90000h - 76E5C000h
CLBCatQ loaded at 76A70000h - 76AF3000h
MMDevApi loaded at 73640000h - 73679000h
PROPSYS loaded at 70B90000h - 70C85000h
dwmapi loaded at 715D0000h - 715E3000h
foo_cdda loaded at 10000000h - 1004E000h
foo_converter loaded at 6A660000h - 6A6DB000h
foo_plorg loaded at 70040000h - 7007E000h
foo_ui_std loaded at 662A0000h - 663B8000h
MSIMG32 loaded at 715F0000h - 715F5000h
foo_albumlist loaded at 02720000h - 0277C000h
foo_uie_typefind loaded at 023C0000h - 023F0000h
foo_dsp_splineeq loaded at 024F0000h - 0252D000h
splinecore loaded at 02580000h - 02588000h
mclmcrrt713 loaded at 027E0000h - 02825000h
PSAPI loaded at 76670000h - 76675000h
MSVCP80 loaded at 734A0000h - 73527000h
MSVCR80 loaded at 73310000h - 733AB000h
MSVCR90 loaded at 717D0000h - 71873000h
foo_rgscan loaded at 6A240000h - 6A28D000h
foo_bpm loaded at 6A1F0000h - 6A23E000h
libfftw loaded at 66110000h - 66296000h
foo_masstag loaded at 03090000h - 030E4000h
foo_audioscrobbler loaded at 030F0000h - 03123000h
foo_dop loaded at 03A50000h - 03C12000h
WS2_32 loaded at 76C00000h - 76C35000h
NSI loaded at 76010000h - 76016000h
QUARTZ loaded at 63060000h - 631D7000h
foo_convolve loaded at 031D0000h - 03221000h
foo_abx loaded at 03170000h - 031A2000h
foo_texttools loaded at 6FA70000h - 6FAA4000h
foo_quicksearch loaded at 6F960000h - 6F991000h
MSVCP90 loaded at 71880000h - 7190E000h
foo_lyricsgrabber2 loaded at 66050000h - 6610C000h
WLDAP32 loaded at 76C40000h - 76C85000h
python25 loaded at 1E000000h - 1E208000h
MSVCR71 loaded at 7C340000h - 7C396000h
foo_fileops loaded at 6A1A0000h - 6A1E7000h
foo_ac3 loaded at 03330000h - 03360000h
foo_input_dts loaded at 69E70000h - 69ED3000h
foo_input_std loaded at 65EF0000h - 66045000h
foo_ui_columns loaded at 04EA0000h - 0502E000h
foo_channel_mixer loaded at 037D0000h - 0380A000h
foo_dsp_effect loaded at 03880000h - 038B3000h
foo_customdb loaded at 03FE0000h - 04085000h
foo_playlist_attributes loaded at 03E70000h - 03EC4000h
foo_lock loaded at 038C0000h - 038D9000h
foo_touchremote loaded at 044F0000h - 0455D000h
dnssd loaded at 6FDD0000h - 6FDE7000h
foo_dsp_hdcd loaded at 03970000h - 0399C000h
foo_dsp_continuator loaded at 03910000h - 03928000h
foo_autoupdate loaded at 68AE0000h - 68B2C000h
foo_musicbrainz loaded at 69410000h - 6946C000h
WINHTTP loaded at 70EB0000h - 70F08000h
webio loaded at 70E60000h - 70EAF000h
foo_uie_lyrics_panel loaded at 054F0000h - 05554000h
foo_uie_biography loaded at 65E90000h - 65EE8000h
foo_dsp_std loaded at 67E50000h - 67E98000h
foo_dsp_yac loaded at 6FC80000h - 6FCA6000h
foo_uie_tagger_mod loaded at 05190000h - 051DE000h
foo_osd loaded at 04090000h - 040BE000h
foo_quicktag loaded at 67B30000h - 67B64000h
foo_input_monkey loaded at 05390000h - 053D8000h
foo_uie_lyrics2 loaded at 05AD0000h - 05BBE000h
WININET loaded at 76570000h - 76665000h
urlmon loaded at 75EA0000h - 75FD6000h
iertutil loaded at 76260000h - 7645B000h
foo_auto_dj loaded at 655F0000h - 656C3000h
OpenCL loaded at 05040000h - 05050000h
foo_biometric loaded at 05560000h - 05597000h
FooID loaded at 05200000h - 0521A000h
foo_uie_playlists_dropdown loaded at 05600000h - 0563C000h
foo_dsp_freeverb loaded at 055A0000h - 055BE000h
foo_menu_addons loaded at 05780000h - 057B0000h
foo_uie_vis_peakmeter_spectrum loaded at 057B0000h - 057EF000h
foo_freedb2 loaded at 67830000h - 67870000h
foo_musicdns loaded at 66BC0000h - 66BE1000h
libofa loaded at 65E50000h - 65E81000h
libfftw3-3 loaded at 70680000h - 707B5000h
MSVCP100 loaded at 65DE0000h - 65E49000h
MSVCR100 loaded at 65530000h - 655EE000h
foo_comserver2 loaded at 059C0000h - 05A16000h
AUDIOSES loaded at 6D980000h - 6D9B6000h
WindowsCodecs loaded at 6DB60000h - 6DC5B000h
apphelp loaded at 70330000h - 7037C000h
DropboxExt.14 loaded at 05A50000h - 05A67000h
MSVCP71 loaded at 7C3A0000h - 7C41B000h
EhStorShell loaded at 6D9F0000h - 6DA21000h
ntshrui loaded at 6D910000h - 6D980000h
srvcli loaded at 71EB0000h - 71EC9000h
cscapi loaded at 05A80000h - 05A8B000h
slc loaded at 73630000h - 7363A000h
mswsock loaded at 71F40000h - 71F7C000h
wshtcpip loaded at 71F30000h - 71F35000h
sud loaded at 65470000h - 6552B000h
ADVPACK loaded at 653F0000h - 6541E000h
VERSION loaded at 73300000h - 73309000h
DUI70 loaded at 73CC0000h - 73D72000h
_socket loaded at 05C90000h - 05C9D000h
wtsapi32 loaded at 732F0000h - 732FD000h
WINSTA loaded at 715A0000h - 715C9000h
WINTRUST loaded at 75CE0000h - 75D0D000h
CFNetwork loaded at 73B90000h - 73C29000h
CoreFoundation loaded at 72F30000h - 72FFB000h
pthreadVC2 loaded at 72F20000h - 72F30000h
WSOCK32 loaded at 732B0000h - 732B7000h
objc loaded at 72F00000h - 72F1C000h
libdispatch loaded at 05D80000h - 05D8E000h
icuin40 loaded at 72E00000h - 72EFD000h
icuuc40 loaded at 72D10000h - 72DF1000h
icudt40 loaded at 71FB0000h - 72D0C000h
ASL loaded at 73030000h - 73041000h
SQLite3 loaded at 73B20000h - 73B83000h
iphlpapi loaded at 71F10000h - 71F2C000h
WINNSI loaded at 71F00000h - 71F07000h
iTunesMobileDevice loaded at 73680000h - 737BF000h
profapi loaded at 732C0000h - 732CB000h
explorerframe loaded at 73F50000h - 740BF000h
DUser loaded at 73E90000h - 73EBF000h
wship6 loaded at 71E60000h - 71E66000h
DNSAPI loaded at 71E10000h - 71E54000h
mdnsNSP loaded at 70880000h - 708A5000h
rasadhlp loaded at 705D0000h - 705D6000h
fwpuclnt loaded at 09FD0000h - 0A008000h
ntmarta loaded at 71F80000h - 71FA1000h
msls31 loaded at 6C950000h - 6C97A000h
xmllite loaded at 6ABC0000h - 6ABEF000h
CRYPTSP loaded at 73290000h - 732A6000h
rsaenh loaded at 73250000h - 7328B000h
RpcRtRemote loaded at 731E0000h - 731EE000h
StructuredQuery loaded at 6A7F0000h - 6A84C000h
actxprxy loaded at 6AB70000h - 6ABBE000h
ieproxy loaded at 6ABF0000h - 6AC1B000h
thumbcache loaded at 6FCF0000h - 6FD06000h
SHDOCVW loaded at 6D9C0000h - 6D9EE000h
ieframe loaded at 6BED0000h - 6C950000h
OLEACC loaded at 71BB0000h - 71BEC000h
SearchFolder loaded at 6A750000h - 6A7F0000h
NetworkExplorer loaded at 6A450000h - 6A5E8000h
LINKINFO loaded at 6DCB0000h - 6DCB9000h
MPR loaded at 717A0000h - 717B2000h
SnacNp loaded at 60F80000h - 60F86000h
drprov loaded at 6A730000h - 6A738000h
ntlanman loaded at 6A710000h - 6A724000h
davclnt loaded at 6A6F0000h - 6A707000h
DAVHLPR loaded at 6A6E0000h - 6A6E8000h
wkscli loaded at 71EA0000h - 71EAF000h
netutils loaded at 71ED0000h - 71ED9000h
PortableDeviceApi loaded at 6A2F0000h - 6A379000h
EhStorAPI loaded at 6A980000h - 6A9A2000h
MLANG loaded at 6BEA0000h - 6BECE000h
nvcuda loaded at 21F10000h - 223AC000h
nvapi loaded at 22470000h - 22616000h
Stack dump analysis:
Address: 21F1ECB9h (nvcuda+ECB9h), symbol: "cuParamSetSurfRef" (+C299h)
Address: 2224EF89h (nvcuda+33EF89h), symbol: "cuGraphicsD3D11RegisterResource" (+2C0FA9h)
Address: 222560A0h (nvcuda+3460A0h), symbol: "cuGraphicsD3D11RegisterResource" (+2C80C0h)
Address: 2224EF89h (nvcuda+33EF89h), symbol: "cuGraphicsD3D11RegisterResource" (+2C0FA9h)
Address: 21F6AAABh (nvcuda+5AAABh), symbol: "clGetPlatformInfo" (+6D7Bh)
Address: 21F67299h (nvcuda+57299h), symbol: "clGetPlatformInfo" (+3569h)
Address: 21F3221Dh (nvcuda+2221Dh), symbol: "cuParamSetSurfRef" (+1F7FDh)
Address: 21F6F074h (nvcuda+5F074h), symbol: "clGetPlatformInfo" (+B344h)
Address: 21F6BF0Dh (nvcuda+5BF0Dh), symbol: "clGetPlatformInfo" (+81DDh)
Address: 2224EF89h (nvcuda+33EF89h), symbol: "cuGraphicsD3D11RegisterResource" (+2C0FA9h)
Address: 05041D88h (OpenCL+1D88h), symbol: "clEnqueueMapBuffer" (+58h)
Address: 65623B0Ah (foo_auto_dj+33B0Ah), symbol: "foobar2000_get_interface" (+56FAh)
Address: 655F6902h (foo_auto_dj+6902h)
Address: 772C0F1Bh (ntdll+60F1Bh), symbol: "WinSqmIncrementDWORD" (+66h)
Address: 0015649Ch (foobar2000+E649Ch)
Address: 7729A833h (ntdll+3A833h), symbol: "RtlDetermineDosPathNameType_U" (+1FAh)
Address: 65637A38h (foo_auto_dj+47A38h), symbol: "foobar2000_get_interface" (+19628h)
Address: 7728F9F9h (ntdll+2F9F9h), symbol: "RtlAnsiCharToUnicodeChar" (+DFh)
Address: 225C9BDCh (nvapi+159BDCh), symbol: "DllRegisterServer" (+15584Ch)
Address: 0015649Ch (foobar2000+E649Ch)
Address: 7728E36Ch (ntdll+2E36Ch), symbol: "RtlInitUnicodeString" (+164h)
Address: 77293C74h (ntdll+33C74h), symbol: "RtlImageNtHeader" (+B10h)
Address: 77293CA3h (ntdll+33CA3h), symbol: "RtlImageNtHeader" (+B3Fh)
Address: 7729B3F2h (ntdll+3B3F2h), symbol: "RtlFormatCurrentUserKeyPath" (+2B1h)
Address: 7729B375h (ntdll+3B375h), symbol: "RtlFormatCurrentUserKeyPath" (+234h)
Address: 77293C74h (ntdll+33C74h), symbol: "RtlImageNtHeader" (+B10h)
Address: 77293CA3h (ntdll+33CA3h), symbol: "RtlImageNtHeader" (+B3Fh)
Address: 772A2A42h (ntdll+42A42h), symbol: "RtlPrefixUnicodeString" (+2A9h)
Address: 772A2329h (ntdll+42329h), symbol: "RtlReAllocateHeap" (+3BBh)
Address: 772A2135h (ntdll+42135h), symbol: "RtlReAllocateHeap" (+1C7h)
Address: 77293C74h (ntdll+33C74h), symbol: "RtlImageNtHeader" (+B10h)
Address: 77293CA3h (ntdll+33CA3h), symbol: "RtlImageNtHeader" (+B3Fh)
Address: 04000000h (foo_customdb+20000h), symbol: "foobar2000_get_interface" (+1D0A0h)
Address: 7729389Eh (ntdll+3389Eh), symbol: "RtlImageNtHeader" (+73Ah)
Address: 7729387Ah (ntdll+3387Ah), symbol: "RtlImageNtHeader" (+716h)
Address: 77293CA3h (ntdll+33CA3h), symbol: "RtlImageNtHeader" (+B3Fh)
Address: 772D1ECDh (ntdll+71ECDh), symbol: "WinSqmSetIfMaxDWORD" (+35h)
Address: 772A2135h (ntdll+42135h), symbol: "RtlReAllocateHeap" (+1C7h)
Address: 772A1FECh (ntdll+41FECh), symbol: "RtlReAllocateHeap" (+7Eh)
Address: 65F66FAAh (foo_input_std+76FAAh)
Address: 7727FB5Ah (ntdll+1FB5Ah), symbol: "NtFreeVirtualMemory" (+12h)
Address: 77292B04h (ntdll+32B04h), symbol: "RtlGetCurrentProcessorNumberEx" (+D3h)
Address: 00100000h (foobar2000+90000h)
Address: 77293C74h (ntdll+33C74h), symbol: "RtlImageNtHeader" (+B10h)
Address: 77293CA3h (ntdll+33CA3h), symbol: "RtlImageNtHeader" (+B3Fh)
Address: 772BB824h (ntdll+5B824h), symbol: "wcspbrk" (+20Dh)
Address: 77298B00h (ntdll+38B00h), symbol: "RtlIntegerToUnicodeString" (+53h)
Address: 7729389Eh (ntdll+3389Eh), symbol: "RtlImageNtHeader" (+73Ah)
Address: 7729387Ah (ntdll+3387Ah), symbol: "RtlImageNtHeader" (+716h)
Address: 772D1ECDh (ntdll+71ECDh), symbol: "WinSqmSetIfMaxDWORD" (+35h)
Address: 77293CA3h (ntdll+33CA3h), symbol: "RtlImageNtHeader" (+B3Fh)
Address: 77293CCEh (ntdll+33CCEh), symbol: "RtlImageNtHeader" (+B6Ah)
Address: 7729387Ah (ntdll+3387Ah), symbol: "RtlImageNtHeader" (+716h)
Address: 77293472h (ntdll+33472h), symbol: "RtlImageNtHeader" (+30Eh)
Address: 764714DDh (kernel32+114DDh), symbol: "HeapFree" (+14h)
Address: 656085DCh (foo_auto_dj+185DCh)
Address: 65608870h (foo_auto_dj+18870h)
Address: 65631843h (foo_auto_dj+41843h), symbol: "foobar2000_get_interface" (+13433h)
Address: 655F9C00h (foo_auto_dj+9C00h)
Address: 6563FEE8h (foo_auto_dj+4FEE8h), symbol: "foobar2000_get_interface" (+21AD8h)
Address: 6563E7B4h (foo_auto_dj+4E7B4h), symbol: "foobar2000_get_interface" (+203A4h)
Address: 656376CCh (foo_auto_dj+476CCh), symbol: "foobar2000_get_interface" (+192BCh)
Address: 22575967h (nvapi+105967h), symbol: "DllRegisterServer" (+1015D7h)
Address: 6563E7B0h (foo_auto_dj+4E7B0h), symbol: "foobar2000_get_interface" (+203A0h)
Address: 772D1ECDh (ntdll+71ECDh), symbol: "WinSqmSetIfMaxDWORD" (+35h)
Address: 7727FEF2h (ntdll+1FEF2h), symbol: "ZwContinue" (+12h)
Address: 77299E63h (ntdll+39E63h), symbol: "LdrInitializeThunk" (+1Ah)
Address: 77260000h (ntdll+0h)
Address: 656379B4h (foo_auto_dj+479B4h), symbol: "foobar2000_get_interface" (+195A4h)
Address: 6563E7C0h (foo_auto_dj+4E7C0h), symbol: "foobar2000_get_interface" (+203B0h)
Address: 65631D52h (foo_auto_dj+41D52h), symbol: "foobar2000_get_interface" (+13942h)
Address: 0014CB56h (foobar2000+DCB56h)
Address: 6FDF27D8h (shared+27D8h), symbol: "uPrintCrashInfo_OnEvent" (+B1h)
Address: 001E9C78h (foobar2000+179C78h)
Address: 001BD4E8h (foobar2000+14D4E8h)
Address: 0014CAE7h (foobar2000+DCAE7h)
Address: 001BA3F9h (foobar2000+14A3F9h)
Address: 764733CAh (kernel32+133CAh), symbol: "BaseThreadInitThunk" (+12h)
Address: 77299ED2h (ntdll+39ED2h), symbol: "RtlInitializeExceptionChain" (+63h)
Address: 7649772Fh (kernel32+3772Fh), symbol: "UnhandledExceptionFilter" (+0h)
Address: 7649772Fh (kernel32+3772Fh), symbol: "UnhandledExceptionFilter" (+0h)
Address: 772D1ECDh (ntdll+71ECDh), symbol: "WinSqmSetIfMaxDWORD" (+35h)
Address: 77299EA5h (ntdll+39EA5h), symbol: "RtlInitializeExceptionChain" (+36h)
Address: 0014CAB0h (foobar2000+DCAB0h)
Address: 0014CAB0h (foobar2000+DCAB0h)
Environment:
App: foobar2000 v1.1.2
OS: Windows 6.1.7601 Service Pack 1 x64
CPU: Intel® Core2 Duo CPU T9600 @ 2.80GHz, features: MMX SSE SSE2 SSE3 SSE4.1
Audio: Speakers (SoundMAX Integrated Digital HD Audio); SPDIF Interface (SoundMAX Integrated Digital HD Audio)
UI: Columns UI 0.3.8.7
Components:
Core (2011-01-22 00:03:02 UTC)
foobar2000 core 1.1.2
foo_abx.dll (2009-06-07 13:25:26 UTC)
ABX Comparator 1.3.4
foo_ac3.dll (2010-12-12 11:25:00 UTC)
AC3 decoder 0.9.5
foo_albumlist.dll (2010-04-29 12:35:36 UTC)
Album List 4.4
foo_audioscrobbler.dll (2010-07-19 13:28:52 UTC)
Audioscrobbler 1.4.7
foo_auto_dj.dll (2011-03-02 14:09:53 UTC)
Auto DJ 1.01
foo_autoupdate.dll (2010-04-19 23:21:14 UTC)
Automatic Updater 1
foo_biometric.dll (2011-01-16 00:55:43 UTC)
Fingerprint tools 0.3
foo_bpm.dll (2010-04-20 12:35:08 UTC)
BPM Analyser 0.2.4.1
foo_cdda.dll (2010-04-29 12:35:30 UTC)
CD Audio Decoder 3.0
foo_channel_mixer.dll (2008-03-12 09:37:48 UTC)
Channel Mixer 0.9.6.5
foo_comserver2.dll (2006-07-31 19:13:20 UTC)
COM Automation server 0.7 alpha 6
foo_converter.dll (2011-01-22 00:00:36 UTC)
Converter 1.5
foo_convolve.dll (2006-08-04 20:57:26 UTC)
Convolver 0.3
foo_customdb.dll (2010-03-04 11:10:54 UTC)
Custom Database 0.1.0_beta1
foo_dop.dll (2011-01-13 01:44:05 UTC)
iPod manager 0.6.8.8
foo_dsp_continuator.dll (2010-02-17 16:26:58 UTC)
Continuator 0.6.1
foo_dsp_effect.dll (2011-01-09 15:31:05 UTC)
Effect DSP 0.5
foo_dsp_freeverb.dll (2010-01-25 10:37:56 UTC)
Freeverb 0.3
foo_dsp_hdcd.dll (2010-08-23 09:16:54 UTC)
HDCD decoder 1.3
foo_dsp_splineeq.dll (2010-11-29 11:40:52 UTC)
Spline Equalizer 0.5
foo_dsp_std.dll (2011-01-22 00:01:18 UTC)
Standard DSP Array 1.0
foo_dsp_yac.dll (2010-10-13 15:36:44 UTC)
Yet Another Convolver 1.1.0
foo_fileops.dll (2011-01-21 23:59:40 UTC)
File Operations 2.1.3
foo_freedb2.dll (2011-01-21 23:59:42 UTC)
freedb Tagger 0.6.3
foo_input_dts.dll (2011-02-27 22:57:34 UTC)
DTS decoder 0.3.0
foo_input_monkey.dll (2010-08-15 22:01:19 UTC)
Monkey's Audio Decoder 2.1.4
foo_input_std.dll (2011-01-22 00:00:58 UTC)
Standard Input Array 1.0
foo_lock.dll (2010-01-11 11:18:36 UTC)
Pause on Lock 0.5
foo_lyricsgrabber2.dll (2010-10-24 23:25:20 UTC)
Lyrics Grabber 2 0.5.5.2 beta
foo_masstag.dll (2009-09-18 09:01:36 UTC)
Masstagger 1.8.4
foo_menu_addons.dll (2010-10-24 23:22:45 UTC)
Menu Addons 1.4.2
foo_musicbrainz.dll (2010-08-14 19:01:28 UTC)
MusicBrainz Tagger 0.2
foo_musicdns.dll (2010-11-22 13:58:47 UTC)
MusicDNS tagger 0.1
foo_osd.dll (2010-10-24 20:43:25 UTC)
On-Screen Display GDI+ 1.63
foo_playlist_attributes.dll (2010-08-23 09:14:02 UTC)
Playlist Attributes 0.3.0
foo_plorg.dll (2010-10-24 20:43:28 UTC)
Playlist Organizer 1.7
foo_quicksearch.dll (2010-10-24 20:43:31 UTC)
Quick Search Toolbar 2.3
foo_quicktag.dll (2010-09-17 23:23:43 UTC)
Quick Tagger 1.0.3
foo_rgscan.dll (2011-01-22 00:00:36 UTC)
ReplayGain Scanner 2.0.9
foo_texttools.dll (2010-09-17 23:24:02 UTC)
Text Tools 1.0.5
foo_touchremote.dll (2010-12-30 09:18:55 UTC)
iPhone/iPod Touch Remote support 0.1.2.1
foo_ui_columns.dll (2010-08-24 09:22:04 UTC)
Columns UI 0.3.8.7
foo_ui_std.dll (2011-01-22 00:00:58 UTC)
Default User Interface 0.9.5
foo_uie_biography.dll (2010-10-24 20:43:37 UTC)
Biography View 0.4.2.3
foo_uie_lyrics2.dll (2010-04-12 18:19:24 UTC)
Lyric Show Panel 2 0.4.6.15
foo_uie_lyrics_panel.dll (2007-08-17 21:56:36 UTC)
Lyrics panel 0.35
foo_uie_playlists_dropdown.dll (2009-09-23 23:44:46 UTC)
Playlists Dropdown 0.7.6
foo_uie_tagger_mod.dll (2010-10-24 15:56:25 UTC)
Tagger Panel 1.2.2
foo_uie_typefind.dll (2007-10-22 21:30:44 UTC)
Typefind 0.2 beta 2
foo_uie_vis_peakmeter_spectrum.dll (2008-04-19 19:18:50 UTC)
Peakmeter Spectrum Visualisation 0.2.0.0 beta
Recent events:
TouchRemote: items modified in library: 1
TouchRemote: items modified in library: 1
TouchRemote: items modified in library: 1
TouchRemote: items modified in library: 18
num_platforms = 1
num_devices = 1
device[0] NAME = Quadro FX 2700M, VENDOR = NVIDIA Corporation
Choosen OpenCL Device Info:
NAME = Quadro FX 2700M
VENDOR = NVIDIA Corporation
VERSION = OpenCL 1.0 CUDA
DRIVER_VERSION = 258.96
ENDIAN_LITTLE = 1
EXECUTION_CAPABILITIES: NATIVE_KERNEL = 0
EXTENSIONS = cl_khr_byte_addressable_store cl_khr_icd cl_khr_gl_sharing cl_nv_d3d9_sharing cl_nv_d3d10_sharing cl_khr_d3d10_sharing cl_nv_d3d11_sharing cl_nv_compiler_options cl_nv_device_attribute_query cl_nv_pragma_unroll cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics
PROFILE = FULL_PROFILE
TYPE: CPU = 0, GPU = 4, ACCELERATOR = 0, DEFAULT = 0
ADDRESS_BITS = 32
GLOBAL_MEM_CACHE_SIZE = 0
GLOBAL_MEM_CACHE_TYPE: NONE = 0, READ_ONLY = 0, READ_WRITE = 0
GLOBAL_MEM_CACHELINE_SIZE = 0
GLOBAL_MEM_SIZE = 521732096 = 497 MiB
MAX_MEM_ALLOC_SIZE = 134217728 = 128 MiB
LOCAL_MEM_SIZE = 16384 = 16 KiB
LOCAL_MEM_TYPE: LOCAL = 1, GLOBAL = 0
MAX_CLOCK_FREQUENCY = 1325 MHz
MAX_CONSTANT_BUFFER_SIZE = 65536 = 64 KiB
MAX_PARAMETER_SIZE = 4352 = 4 KiB
MAX_WORK_ITEM_DIMENSIONS = 3
MAX_WORK_ITEM_SIZES = [512 | 512 | 64]
PREFERRED_VECTOR_WIDTH_CHAR = 1
PREFERRED_VECTOR_WIDTH_SHORT = 1
PREFERRED_VECTOR_WIDTH_INT = 1
PREFERRED_VECTOR_WIDTH_LONG = 1
PREFERRED_VECTOR_WIDTH_FLOAT = 1
PREFERRED_VECTOR_WIDTH_DOUBLE = 0
PROFILING_TIMER_RESOLUTION = 1000ns
QUEUE_PROPERTIES = OUT_OF_ORDER_EXEC_MODE_ENABLE = 1
SINGLE_FP_CONFIG: DENORM = 0, ROUND_TO_ZERO = 8, ROUND_TO_INF = 0, FMA = 0
Building OpenCL kernel from source.
Line 373: OpenCL error = -30 (CL_INVALID_VALUE)
Line 375: OpenCL error = -44 (CL_INVALID_PROGRAM)
Line 381: OpenCL error = -44 (CL_INVALID_PROGRAM)
link in initial post appears to be dead. has this plugin been terminated, or is it available elsewhere?
Can I get a clarification on what "ERROR: bad allocation" means and what would cause it? The foobar console is not very helpful either.
If other tracks work, my best guess is that the track is too long with a too high sample rate. Your main RAM must be able to hold all channels downsampled by a factor of 2, as floats, i.e. 4 bytes per sample, and GPU memory must be available for one channel - this should not take up additional main RAM, but it's probably implementation dependent.
@odyssey
Looks like it can't compile the source code, which is weird, as it's embedded in the file. clCreateProgramWithSource (http://www.khronos.org/registry/cl/sdk/1.0/docs/man/xhtml/clCreateProgramWithSource.html) returns CL_INVALID_VALUE "if count is zero or if strings or any entry in strings is NULL." Not sure how this can happen, as it was pretty much hardcoded, but I changed it to the version taking a null-terminated string and no indicated size. Maybe it helps, unfortunately I can't debug on Nvidia hardware.
link in initial post appears to be dead. has this plugin been terminated, or is it available elsewhere?
It's available in this thread (http://www.hydrogenaudio.org/forums/index.php?showtopic=84916&view=getlastpost), with the current version 1.02 (http://www.hydrogenaudio.org/forums/index.php?act=attach&type=post&id=6486).
Hello, glad that the new version doesn't crash foobar anymore when error'd
Here's my error log:
It happens when I just "Analyse as single track".
Track length: 7:56
Not on Light mode, No options are checked in File > Auto DJ >
It seems that I am suffering from the same error as the previous 2 Nvidia card users.
Namely, this "GPU performance = 0 GFLOP/s, bandwidth = 0 GB/s" and "Line 374: OpenCL error = -30 (CL_INVALID_VALUE)" seem to be a common error.
The window box Analyze results showed:
file://*.mp3
Loaded 10495k samples * 2 channels.
Total time: 3s (181 x realtime)
Console:
[01:17:21] [01:17:25] # platforms = 1
platform[0] VENDOR = NVIDIA Corporation
# devices = 1
device[0] NAME = GeForce 310M, VENDOR = NVIDIA Corporation
[01:17:25] Choosen OpenCL Device Info:
NAME = GeForce 310M
VENDOR = NVIDIA Corporation
VERSION = OpenCL 1.0 CUDA
DRIVER_VERSION = 258.87
ENDIAN_LITTLE = 1
EXECUTION_CAPABILITIES: NATIVE_KERNEL = 0
EXTENSIONS = cl_khr_byte_addressable_store cl_khr_icd cl_khr_gl_sharing cl_nv_d3d9_sharing cl_nv_d3d10_sharing cl_khr_d3d10_sharing cl_nv_d3d11_sharing cl_nv_compiler_options cl_nv_device_attribute_query cl_nv_pragma_unroll cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics
PROFILE = FULL_PROFILE
TYPE: CPU = 0, GPU = 4, ACCELERATOR = 0, DEFAULT = 0
ADDRESS_BITS = 32
GLOBAL_MEM_CACHE_SIZE = 0
GLOBAL_MEM_CACHE_TYPE: NONE = 0, READ_ONLY = 0, READ_WRITE = 0
GLOBAL_MEM_CACHELINE_SIZE = 0
GLOBAL_MEM_SIZE = 431489024 = 411 MiB
MAX_MEM_ALLOC_SIZE = 134217728 = 128 MiB
LOCAL_MEM_SIZE = 16384 = 16 KiB
LOCAL_MEM_TYPE: LOCAL = 1, GLOBAL = 0
MAX_CLOCK_FREQUENCY = 1530 MHz
MAX_CONSTANT_BUFFER_SIZE = 65536 = 64 KiB
MAX_PARAMETER_SIZE = 4352 = 4 KiB
MAX_WORK_ITEM_DIMENSIONS = 3
MAX_WORK_ITEM_SIZES = [512 | 512 | 64]
PREFERRED_VECTOR_WIDTH_CHAR = 1
PREFERRED_VECTOR_WIDTH_SHORT = 1
PREFERRED_VECTOR_WIDTH_INT = 1
PREFERRED_VECTOR_WIDTH_LONG = 1
PREFERRED_VECTOR_WIDTH_FLOAT = 1
PREFERRED_VECTOR_WIDTH_DOUBLE = 0
PROFILING_TIMER_RESOLUTION = 1000ns
QUEUE_PROPERTIES = OUT_OF_ORDER_EXEC_MODE_ENABLE = 1
SINGLE_FP_CONFIG: DENORM = 0, ROUND_TO_ZERO = 8, ROUND_TO_INF = 0, FMA = 0
[01:17:25] Building OpenCL kernel from source.
Line 374: OpenCL error = -30 (CL_INVALID_VALUE)
[01:17:28] Error: OpenCL kernel not initialized. Cannot analyze track.
[01:17:28] Analyzing...
BPM = -1
[01:17:28] Kernel time = 0 s
GPU performance = 0 GFLOP/s, bandwidth = 0 GB/s
(I must have cancelled my reply by mistake. It doesn't look like it got binned...)
Can I get a clarification on what "ERROR: bad allocation" means and what would cause it? The foobar console is not very helpful either.
If other tracks work, my best guess is that the track is too long with a too high sample rate. Your main RAM must be able to hold all channels downsampled by a factor of 2, as floats, i.e. 4 bytes per sample, and GPU memory must be available for one channel - this should not take up additional main RAM, but it's probably implementation dependent.
This happened for all files I tried analyzing. I have 8GB system RAM and 1GB video RAM (GeForce GTX 460SE). I'd hope that would be enough.
I'll try 1.0.2 and see if anything changes for me.
Edit: Nope. Progress in foo_auto_dj completely halts once the bottom (individual file, I assume) progress bar reaches the half-way point and nothing seems to happen at all -- fb2k memory uses goes up to just over 500MB and doesn't fluctuate at all to indicate anything is happening, and CPU usage just sits around 6~8%. When I click Abort, foobar crashes, with the component being indicated as the cause in the crash report.
hum, semms like the downlaod link is down....
any chance it gets reupped?
EDIT: found it in the download section...sry
Looks like nvidida specific problems during clCreateProgramWithSource or clBuildProgram.
Zarggg's is different but maybe related, as it builds correctly and then does not return from execution, with no errors reported before.
This version does not fix it, but might help to identify it further by printing the build log:
foo_auto_dj_1.03 (http://www.hydrogenaudio.org/forums/index.php?act=attach&type=post&id=6539).
Tested with the newer 1.03.
Log:
Result window:
file://*.mp3
Loaded 5507k samples * 2 channels.
Total time: 2s (163 x realtime)
Console:
[20:49:44] # platforms = 1
platform[0] VENDOR = NVIDIA Corporation
# devices = 1
device[0] NAME = GeForce 310M, VENDOR = NVIDIA Corporation
[20:49:44] Choosen OpenCL Device Info:
NAME = GeForce 310M
VENDOR = NVIDIA Corporation
VERSION = OpenCL 1.0 CUDA
DRIVER_VERSION = 275.33
ENDIAN_LITTLE = 1
EXECUTION_CAPABILITIES: NATIVE_KERNEL = 0
EXTENSIONS = cl_khr_byte_addressable_store cl_khr_icd cl_khr_gl_sharing cl_nv_d3d9_sharing cl_nv_d3d10_sharing cl_khr_d3d10_sharing cl_nv_d3d11_sharing cl_nv_compiler_options cl_nv_device_attribute_query cl_nv_pragma_unroll cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics
PROFILE = FULL_PROFILE
TYPE: CPU = 0, GPU = 4, ACCELERATOR = 0, DEFAULT = 0
ADDRESS_BITS = 32
GLOBAL_MEM_CACHE_SIZE = 0
GLOBAL_MEM_CACHE_TYPE: NONE = 0, READ_ONLY = 0, READ_WRITE = 0
GLOBAL_MEM_CACHELINE_SIZE = 0
GLOBAL_MEM_SIZE = 456720384 = 435 MiB
MAX_MEM_ALLOC_SIZE = 134217728 = 128 MiB
LOCAL_MEM_SIZE = 16384 = 16 KiB
LOCAL_MEM_TYPE: LOCAL = 1, GLOBAL = 0
MAX_CLOCK_FREQUENCY = 1530 MHz
MAX_CONSTANT_BUFFER_SIZE = 65536 = 64 KiB
MAX_PARAMETER_SIZE = 4352 = 4 KiB
MAX_WORK_ITEM_DIMENSIONS = 3
MAX_WORK_ITEM_SIZES = [512 | 512 | 64]
PREFERRED_VECTOR_WIDTH_CHAR = 1
PREFERRED_VECTOR_WIDTH_SHORT = 1
PREFERRED_VECTOR_WIDTH_INT = 1
PREFERRED_VECTOR_WIDTH_LONG = 1
PREFERRED_VECTOR_WIDTH_FLOAT = 1
PREFERRED_VECTOR_WIDTH_DOUBLE = 0
PROFILING_TIMER_RESOLUTION = 1000ns
QUEUE_PROPERTIES = OUT_OF_ORDER_EXEC_MODE_ENABLE = 1
SINGLE_FP_CONFIG: DENORM = 0, ROUND_TO_ZERO = 8, ROUND_TO_INF = 0, FMA = 0
[20:49:44] Line 373: OpenCL error = -30 (CL_INVALID_VALUE)
Error: Couldn't build OpenCL kernel from source.
[20:49:45] Error: OpenCL kernel not initialized. Cannot analyze track.
[20:49:45] Analyzing...
BPM = -1
[20:49:45] Kernel time = 0 s
GPU performance = 0 GFLOP/s, bandwidth = 0 GB/s
Thanks for your continued effort.
I just downloaded the new version, but won't get a chance to test for a day or two. I'll report my findings when I do.
clCreateProgramWithSource (http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateProgramWithSource.html) returns CL_INVALID_VALUE and I don't know why.
I've built a simple test case, just for the OpenCL stuff:
OpenCLTest.zip (http://bit.ly/myPKym)
The archive includes the source and binary.
clCreateProgramWithSource (http://www.khronos.org/registry/cl/sdk/1.1/docs/man/xhtml/clCreateProgramWithSource.html) returns CL_INVALID_VALUE and I don't know why.
I've built a simple test case, just for the OpenCL stuff:
OpenCLTest.zip (http://bit.ly/myPKym)
The archive includes the source and binary.
Upon running the .exe included under Release: A cmd window pops up and displays:
OpenCLError: 'clBuildProgram(*CLProgram, 1, &devices[preferred], "-cl-denorms-are-zero -cl-mad-enable -cl-no-signed-zeros -cl-fast-relaxed-math", NULL, NULL)' returned -11!
then it crashes with the generic win7 "XYZ.exe has stopped responding. Windows is trying to find a solution etc."
Thanks for testing.
The error is a little different than in the foobar component:
CL_BUILD_PROGRAM_FAILURE if there is a failure to build the program executable. This error will be returned if clBuildProgram does not return until the build has completed.
Looks like CUDA doesn't like my OpenCL source code. AMD Kernel Analyzer compiles it with no complaints, though.
Maybe somebody else can take a shot at debugging. The embedded source is shortened, but equivalent to autocovariance.cl (http://pastebin.com/xnPGiRKG).
I'm still getting issues where foobar2000 locks up (and sometimes crashes) during a scan. There's no log to give you. The best I could do is a process dump when the crash occurs, but I'm not sure how useful that would be to you.