Old 25th October 2005, 16:50   #1
redi jedi
Will code for food
 
Join Date: Mar 2005
Location: orlando
Posts: 521
change the drawing order?

how about being able to change wither shapes or waves get drawn before or after the effects? then they will be sunk in to the presets, like there in the backround. basicly you wont see the shape/wave in the place you draw it, it will only be where the preset moves it, you know what i mean?

or mabye even a var to set the render target for each shape/wave, so you can render a wave/shape to one of the shape's textures

i've also been dreaming about textured waves...

of course if i add all that, i'm gonna have to increase the number of shapes/waves

Blah!
redi jedi is offline   Reply With Quote
Old 26th October 2005, 02:39   #2
shifter
Senior Member
 
Join Date: Jun 2002
Location: Australia
Posts: 149
Being able to paint the wave under the movement would be pretty neat

If you are changing the order and number of components tho, might it be possible to insert a new beat detection one? base it off the waveform but have it run before the bulk of the preset and pass values to w1-8

ideally i guess it would have access to the whole sample value range at once rather than serially
shifter is offline   Reply With Quote
Old 26th October 2005, 03:34   #3
redi jedi
Will code for food
 
Join Date: Mar 2005
Location: orlando
Posts: 521
mabye a function sound(freq,channel) that returns the amplutude of the sound near the frequency, or something

Blah!
redi jedi is offline   Reply With Quote
Old 26th October 2005, 03:38   #4
redi jedi
Will code for food
 
Join Date: Mar 2005
Location: orlando
Posts: 521
i can add more bass/mid/treb type vars, like beat,beatrate or whatever, we just need to find a good algrothem to use, i could model krash's, mine or someone elses in md and just pass along the key vars, that way the beatdection is running all the time, and there for should be more accurate, not to mention it will be more artist friendly, since there will be little need to mess with beat dection in the presets

i dont really know much about audio, so if someone can tell me what to do with the data, logicly, i can prolly transform it into code.

Blah!
redi jedi is offline   Reply With Quote
Old 26th October 2005, 09:38   #5
Phat
Major Dude
 
Phat's Avatar
 
Join Date: Nov 2003
Posts: 979
Being able to control which thing goes on top of which would allow a lot more artistic liberties. Plus, some of my presets would break if the order changed.
Phat is offline   Reply With Quote
Old 26th October 2005, 12:14   #6
someusername
Senior Member
 
Join Date: Sep 2004
Location: greece
Posts: 146
Quote:
Originally posted by redi jedi
mabye a function sound(freq,channel) that returns the amplutude of the sound near the frequency, or something
hhm, this sounds like the best idea so far. It allows authors to provide their own (per-preset) beat detection in the most raw/effective way...

Redi, I had looked into the way the bass/mid/treb variables were calculated myself, sometime ago. It seems that the actual spectral data from the fft are returned to the plugin framework. To be specific, I'm talking about the 'mysound.fSpecLeft' member of CPlugin. It's an array of 'MY_FFT_SAMPLES' floats.

This member is sent to the CFFT::time_to_frequency_domain() method [this occurs in CPlugin:oCustomSoundAnalysis()] and receives the actual spectral data from the fft. With this data, it is very easy to write that sound(freq,channel) function you where talking about, although i think you may need to lose the 'channel' parameter, since the data seems to come from analyzing the left audio channel only. I can provide all the info you want on the implementation of this, just let me freshen up a bit, cause i'm getting all rusty with FFTs
someusername is offline   Reply With Quote
Old 27th October 2005, 07:50   #7
shifter
Senior Member
 
Join Date: Jun 2002
Location: Australia
Posts: 149
redi: i think the problem with coding in a particular beat detection or spectrum analysis formula is that there really are far too many options, and each is best for a particular kind of preset - so leaving it open for the author to choose would be the way to go i think. Making it easier to create good detection tho is excellent!
shifter is offline   Reply With Quote
Old 27th October 2005, 10:14   #8
Phat
Major Dude
 
Phat's Avatar
 
Join Date: Nov 2003
Posts: 979
I think what would be nice with sound input would be being able to set different frequency bands and then be able to reference each volume level.

For instance being able to say on one preset have bands from 0 - 300 Hz, 300 Hz - 1 kHz, 1 kHz - 16 kHz, 16 KHz - 22 KHz.

But then in the next preset be able to have a different number of bands, where the frequency range of each has changed. Say 0 - 90 Hz, 90 - 250 Hz, 250 - 500, 500 - 1500, 3000 - 5000, 5 KHz - 16 KHz, 16KHz - 22 KHz.

Have a set variable...

set freq1 = (0,90);
set freq2 = (90,250);
set freq3 = (250,500);
set freq4 = (500,1500);
Etc.

To define each band, and then be able to reference each of them. Cd audio goes up to like 22KHz, that's always a good place to top out at.

I think that would take the responsive capabilities of milkdrop to new levels.

Not only could you hone down beat detection, but you could set each variable to respond to different sections of the music.

I don't know if this can be done exactly like I'm describing it, but it is the best configuration I can come up with... And at night, I hold Parametric EQs like they where pillows... Seriously.
Phat is offline   Reply With Quote
Old 27th October 2005, 17:13   #9
someusername
Senior Member
 
Join Date: Sep 2004
Location: greece
Posts: 146
This approach of yours seems the most interesting phat and in fact it can get ever more flexible. What if we had this sound() function mentioned above, but instead of passing it one frequency as argument, what if we could pass it a range of frequencies and get the level for that frequency band? I.e. sound(90,200) would return the average level for the frequencies between 90 and 200Hz. I think it's cool. We would be able to define custom frequency bands throughout the code!

If i remember well, MD's fft uses 512 sound samples, which means we can get readings for 256 subbands in the range of 0 to 22050Hz. This provides ~90Hz wide frequency bands, I think it's more than adequate! I can't guarantee on the precision though, since I'll have to see what kind of windowing function is applied to the data before the fft (if such one is used.) It should work fine anyway, though.

Anyway, I'll take a look at it during the night, gotta run now.

ps, Redi, we'll need to know the sampling frequency and resolution for this to happen. You think you can read that info from winamp at runtime?
someusername is offline   Reply With Quote
Old 27th October 2005, 23:43   #10
Phat
Major Dude
 
Phat's Avatar
 
Join Date: Nov 2003
Posts: 979
I think that's what I was talking about yin....

We just have to make sure there are as little rules about what you can and can't do with the bands as passable.

Like allow them to overlap/include the same frequencies.

Remember, just because we can not presently think of a way to do something, doesn't mean later people won't appreciate the freedom.

For instance you might have a different band that includes a lot of the midrange if you want that aspect of the preset to respond to vocals. Separate from you're more logarithmic interval bands.
Phat is offline   Reply With Quote
Old 28th October 2005, 02:04   #11
someusername
Senior Member
 
Join Date: Sep 2004
Location: greece
Posts: 146
I know we're talking about the same thing here, but why bothering to define ranges explicitly for each frequency band when we can pass them to the function as arguments instead?

I don't know, it just seems more compact/reasonable to me this way. (I hope it's not just me)

And I don't think it will be any "heavier" to implemetn. (from the "programming overhead" point of view, i mean)
someusername is offline   Reply With Quote
Old 28th October 2005, 03:03   #12
Phat
Major Dude
 
Phat's Avatar
 
Join Date: Nov 2003
Posts: 979
Oh okay I guess I get what you're saying. (I'm actually not all that good with this code shit...)

That way we don't have to define each band I guess? Thats cool.

Remember, when dealing with sound, you frequency ranges most likely want to be slightly logarithmic going up. (not evenly spaced like say 90 Hz bands all the way up, just FYI)
Phat is offline   Reply With Quote
Old 28th October 2005, 04:23   #13
Eo.S.
Senior Member
 
Join Date: Oct 2004
Posts: 115
Send a message via AIM to Eo.S.
there needs to be a different analysis for sub frequencies [I have a very accurate bass only version of my non-FFT freq analysis preset].
As a 512 division FFT sux balls for bass. As is made obvious by the fact that in MD even when there is no bass, the bass variable always registers something, plus it's slow to respond.
With FFT to get good measurements for bass you need at least 4000 divisions, even then it still seems to register subs when there aren't any, particularly between beats.
Eo.S. is offline   Reply With Quote
Old 28th October 2005, 15:29   #14
redi jedi
Will code for food
 
Join Date: Mar 2005
Location: orlando
Posts: 521
currently md's bass/mid/treb vars are not done very well, as i'm sure you all know, while they work ok for first tier responce ie. zoom=1+bass*.1; thats what they where designed for, each sample gets avarged with the next, to cut out noise, then it gets sized and a whole lot of other crap, witch i think is where the main problem is. oh and it doesnt use 512 samples, it uses like 498 or something.

and i love this idea of a sound(freqlow,freqhigh) function, its like butter...
looks like i need to do some research on winamp, mabye we can get then sound some other way(i wonder how hard it would be to change md from a vis pluging to a dsp....

Blah!
redi jedi is offline   Reply With Quote
Old 28th October 2005, 15:38   #15
Phat
Major Dude
 
Phat's Avatar
 
Join Date: Nov 2003
Posts: 979
I'm likin' the sound(freqlow,freqhigh) function idea also, now that I know what the fuck Yin was talking about...

Phat is offline   Reply With Quote
Old 28th October 2005, 16:24   #16
someusername
Senior Member
 
Join Date: Sep 2004
Location: greece
Posts: 146
@Eo.S, I'll have to agree with you on this (FFT sucks for bass) but it can produce decent results if you 'pre-tweak' the sample a bit. (At least more decent than the 'bass/mid/treb' we have atm!) Unfortunately, there's no use in realtime applications for 4000bin FFTs.

To be honest, I'm doing some experiments with a little program i wrote, and it seems to be doing well with custom sine waveforms I'm feeding it (with at most 5-6 dominant frequencies), but there's a lot of spectral leaking when I'm trying real audio data...
I'll see if I can get it to work any better, i'll probably be back with feedback later...

Btw, I haven't gotten down to actually cross-checking results from your band analysis preset with any sound-engineering program. How accurate are they?

@Redi, 498 samples? Are you sure? I haven't checked it lately to be honest, but ffts requires the number of samples to be a power of 2. Unless it's the prime-factor implementation, which I really doubt, since it's much slower. Anyway...

And I must admit I was having the same idea about the dsp! I 've tried to apply sound effects to WAV files this way in the past! [Not with the success I was hoping for -I must add- but it seemed to work afterall!]
someusername is offline   Reply With Quote
Old 28th October 2005, 17:34   #17
redi jedi
Will code for food
 
Join Date: Mar 2005
Location: orlando
Posts: 521
void CPlugin:oCustomSoundAnalysis()
{
memcpy(mysound.fWave[0], m_sound.fWaveform[0], sizeof(float)*576);
memcpy(mysound.fWave[1], m_sound.fWaveform[1], sizeof(float)*576);

// do our own [UN-NORMALIZED] fft
float fWaveLeft[576];
for (int i=0; i<576; i++)
fWaveLeft[i] = m_sound.fWaveform[0][i];

memset(mysound.fSpecLeft, 0, sizeof(float)*MY_FFT_SAMPLES);

myfft.time_to_frequency_domain(fWaveLeft, mysound.fSpecLeft);
//for (i=0; i<MY_FFT_SAMPLES; i++) fSpecLeft[i] = sqrtf(fSpecLeft[i]*fSpecLeft[i] + fSpecTemp[i]*fSpecTemp[i]);

// sum spectrum up into 3 bands
for (i=0; i<3; i++)
{
// note: only look at bottom half of spectrum! (hence divide by 6 instead of 3)
int start = MY_FFT_SAMPLES*i/6;
int end = MY_FFT_SAMPLES*(i+1)/6;
int j;

mysound.imm[i] = 0;

for (j=start; j<end; j++)
mysound.imm[i] += mysound.fSpecLeft[j];
}

// do temporal blending to create attenuated and super-attenuated versions
for (i=0; i<3; i++)
{
float rate;

if (mysound.imm[i] > mysound.avg[i])
rate = 0.2f;
else
rate = 0.5f;
rate = AdjustRateToFPS(rate, 30.0f, GetFps());
mysound.avg[i] = mysound.avg[i]*rate + mysound.imm[i]*(1-rate);

if (GetFrame() < 50)
rate = 0.9f;
else
rate = 0.992f;
rate = AdjustRateToFPS(rate, 30.0f, GetFps());
mysound.long_avg[i] = mysound.long_avg[i]*rate + mysound.imm[i]*(1-rate);


// also get bass/mid/treble levels *relative to the past*
if (fabsf(mysound.long_avg[i]) < 0.001f)
mysound.imm_rel[i] = 1.0f;
else
mysound.imm_rel[i] = mysound.imm[i] / mysound.long_avg[i];

if (fabsf(mysound.long_avg[i]) < 0.001f)
mysound.avg_rel[i] = 1.0f;
else
mysound.avg_rel[i] = mysound.avg[i] / mysound.long_avg[i];
}
}

my bad that was the waveforms i was thinking of, gotta go to work, gonna be a long night, not sure if i'll make it back here or not, heres is the docustomsound function, mysound.imm_rel is bass/mid/treb and .avg_rel is bass_att/...

Blah!
redi jedi is offline   Reply With Quote
Old 29th October 2005, 23:44   #18
Phat
Major Dude
 
Phat's Avatar
 
Join Date: Nov 2003
Posts: 979
I think at some point and time Shifter was talking about custom waveforms actually having 498 points instead of 512.

I think it was Shifter. Might be related.
Phat is offline   Reply With Quote
Old 30th October 2005, 01:58   #19
someusername
Senior Member
 
Join Date: Sep 2004
Location: greece
Posts: 146
Unhappy

Well, i've been looking into this again... (the fft thing) It seems i can't get the accuracy i was hoping for... There is enough power leak into neighboring bands, and it's even more prominent at the frequencies below 300Hz. (the area of interest!) I've posted some graphs i got with this program I made... they're not many, but you'll get the idea.
If you're all still for this, let me know. I just wanted to inform you that it won't be that accurate afterall. I've tried just about everything!

I also noticed that the sample values (value1/value2) that come from MD's custom waveforms, when you turn the 'use spectrum' option on, are missing entirely the first 500 audible hertz. I was playing back sine waves at 20Hz to ~500 for like five minutes, and the 'frequency spectrum' didn't even have a clue! It looked more like the actual waveform, rather than its spectrum! I'm just trying to say that this method won't get us very far with accurate band analysis. (imo)

here are the graphs.
Attached Files
File Type: zip graphs.zip (75.9 KB, 791 views)
someusername is offline   Reply With Quote
Old 1st November 2005, 16:39   #20
redi jedi
Will code for food
 
Join Date: Mar 2005
Location: orlando
Posts: 521
well i've got the main body of the sound function inplace, it does what i want, but i have one problem... i cant get to the sound data, i can add a constant from var to var2, but i cant seem to acess mysound.fspecleft

i tryed including plugin.h (where mysound is initlizied), get an error about not being able to open the file. though about making a function in sound.h or something that exported the value of a perticular freq, but i dont know if i'll be able to acess that ither

Blah!
redi jedi is offline   Reply With Quote
Old 1st November 2005, 17:22   #21
someusername
Senior Member
 
Join Date: Sep 2004
Location: greece
Posts: 146
Redi, i just dropped by to let you know i have the sound() function ready, i didn't know you were working on it too... (just saw your post.)
My implementation is in pseudocode. I think it's the most flexible format to get the most of. I'm sure you'll be able to adjust it to the source code in no time. There's lots of comments and explaining (it's in HTML), check it out...

Anyway, i just read you're having trouble with data "visibility"... I'll look into it, see if i can help with anything... I'll just have to install Visual C++ first...
I guess i'll be back on this tomorrow... In the meantime, i hope you find my code useful
someusername is offline   Reply With Quote
Old 1st November 2005, 17:24   #22
someusername
Senior Member
 
Join Date: Sep 2004
Location: greece
Posts: 146
Attached Files
File Type: zip soundfunctionpseudocode.zip (11.4 KB, 809 views)
someusername is offline   Reply With Quote
Old 1st November 2005, 17:26   #23
someusername
Senior Member
 
Join Date: Sep 2004
Location: greece
Posts: 146
btw, where exactly must the source code for the function be?
someusername is offline   Reply With Quote
Old 2nd November 2005, 05:41   #24
redi jedi
Will code for food
 
Join Date: Mar 2005
Location: orlando
Posts: 521
beta5

ok here we go again, this time we got the new sound function and menu option for drawing shapes/waves in backround.

@yin, thats really funny, the function i was working on is identical to yours guess great minds think alike huh?
but it doesnt use a custom fft, just the one from MD, but it seems to work pretty good

useage on the sound func is sound(low, high), low and high have to be above 0 and less than 512, although above around 400 it kinda dies out, oh and i didnt take the avg. i took the total, so if you want avg, just devide by (high-low)

and the draw in backround option is only available in the menu, i didnt figure it would be very usefull to change it on the fly, i can change that if theres a demand for it.

tell me what you guys think, oh and heres a few prests showing off what it does
Attached Files
File Type: zip beta5.zip (13.0 KB, 869 views)

Blah!
redi jedi is offline   Reply With Quote
Old 2nd November 2005, 11:34   #25
someusername
Senior Member
 
Join Date: Sep 2004
Location: greece
Posts: 146
COOL! That's great! How did you get to access the sound data afterall? Added some 'extern' declaration or did you change the access directly in the class's include file?
someusername is offline   Reply With Quote
Old 2nd November 2005, 13:59   #26
redi jedi
Will code for food
 
Join Date: Mar 2005
Location: orlando
Posts: 521
i tryed adding an extern m_sound, that didnt work since eval.h cant see the definition of m_sound, i tryed including plugin.h, that gave me a LOT of errors. so what i had to do was add an extern double spec[512] and a public function setspec(double sound[512]) then i called the function from docustomsoundanalisys() and passed it fspecleft[512]. and by the way type casting doesnt work for arrays, you have to do a for loop and type cast each element one at a time(fspecleft is float, sound function works on doubles)

i even tryed making m_sound(in plugin.h) public, but that didnt seem to matter at all, using that set function above was the only way i could think of that it almost had to work...

Blah!
redi jedi is offline   Reply With Quote
Old 3rd November 2005, 08:09   #27
Phat
Major Dude
 
Phat's Avatar
 
Join Date: Nov 2003
Posts: 979
@Redi Jedi, You're values for sound(low,high) in

" Redi Jedi'stest 4shapes and texs +effects +sound +textinbackround(milkdrop beta5) "

only go up to 400, does that correspond to 22KHz?
Phat is offline   Reply With Quote
Old 3rd November 2005, 14:02   #28
redi jedi
Will code for food
 
Join Date: Mar 2005
Location: orlando
Posts: 521
the sound function accepts from 0 to 512, but above about 400 it doesnt output much, so i only used from 0 to 400 for my spetrascope(i think thats what your refering to). if you change the top var, to 512 you should see what i'm saying. and i have no idea what frequency it corrisponds to.. but if some of you guys with the synthisizers wanna do some testing i wouldnt complain

Blah!
redi jedi is offline   Reply With Quote
Old 3rd November 2005, 16:05   #29
Phat
Major Dude
 
Phat's Avatar
 
Join Date: Nov 2003
Posts: 979
will do.

Actually I think the trick is going to be synths with fiters.

Last edited by Phat; 3rd November 2005 at 16:25.
Phat is offline   Reply With Quote
Old 3rd November 2005, 17:11   #30
someusername
Senior Member
 
Join Date: Sep 2004
Location: greece
Posts: 146
I haven't seen Redi's code to be honest, but i don't quite think that the arguments of the function represent the precise bands in which the fft divides the spectrum (there are only 256 bands for a 512 sample fft,not 512)

The first number in the fft output is the mean value of the signal, the rest 256 are the amplitudes of the bands (when multiplied by 2/sqrt(512)) and the rest 255 can be safely discarded because the initial signal is encoded in real numbers (and not complex) That's what math says.

I have no idea as to what this 0...512 represents. The output of the function however, seems to be covering the entire 0Hz-22050Hz range (I've tested that with single sine waves though sound forge) There's a lot of noise in the last quarter of the spectrum though. So I guess you could say that the parameters represent 512 bands, covering the entire spectrum, each being 22050/512==43Hz

and Redi, the function seems to return nothing when you want to get the level for a single band. (when bandLow==bandHigh)

Just mentioning these, I'm pretty satisfied with the way it works.
someusername is offline   Reply With Quote
Old 3rd November 2005, 17:36   #31
redi jedi
Will code for food
 
Join Date: Mar 2005
Location: orlando
Posts: 521
ya i set it up to be 0 if there equal cause its a while loop, i guess because its supost to be the sound between the bands, there cant be any sound between band 1 and 1, but i agree it would make sence to return the value of band one... i dont know its prolly not accurate at the one band level.

as for the 512 thing, i just chose that because thats how many elements are in the .fSpecLeft[] array in m_sound that i used to fill my sound[] array for the function, what you where saying makes sence though, when you look at the whole spectrum that sound() returns the bottom seems to move whenever theres music, and the middle seems to be more bass reactive (witch is why i only used like 60-400 or something) if we can narrow down what bands do what, i'll add that to the tooltip in the menu so people will have a better idea of how to use it.

there is a defenet fall off around sample >~400 but it stil returns data(god knows what) i guess it works well enough ( i made a prest with the sound function driving an spectrum in one wave, and md's spectrum(the menu idem in wave code) in another, one on top and one on the bottom, with dy pulling tward y=.5; when the sound function was set up right, they look almost the same, but since you can change the band size when tweeked the sound one looked like it was responding better, i could actualy see when the beat was going down in pitch, it looked hella kool, although there was still some signal bleeding going on, how can i make sin waves to play through MD so i can test myself?

Blah!
redi jedi is offline   Reply With Quote
Old 3rd November 2005, 23:06   #32
someusername
Senior Member
 
Join Date: Sep 2004
Location: greece
Posts: 146
The problem is that only the first 256 numbers in fSpecLeft are supposed to be used to derive amplitude levels for the entire spectrum. The other 256 are "1-1" equal to the first 256. (first with last, second with second-last, etc.)
However, I've seen the function work at the same time with a spectrum waveform directly from MD and they're pretty much identical for the frequencies we'll be needing...

I think it works pretty fine. If you feel like fixing sth about it, maybe allowing it to return the level for a single band would be useful for beat detection.

We're making a big deal out of this! I mean, till yesterday we only had the crappy bass/mid/treb and now we can't settle with this?

As for the sine waves, (when it comes to playing them back in winamp) I use SoundForge to create them [it's Menu / Tools / Synthesis / Simple ... ]
I can e-mail you some if you want, no prob, just ask. What size can your e-mail inbox hold?

(btw, how come we didn't think of actually grabbing the data, for the sound function, directly from a 'spectrum' waveform ? )
someusername is offline   Reply With Quote
Old 3rd November 2005, 23:40   #33
Phat
Major Dude
 
Phat's Avatar
 
Join Date: Nov 2003
Posts: 979
"We're making a big deal out of this! I mean, till yesterday we only had the crappy bass/mid/treb and now we can't settle with this?"

For years me and Eo.S. have thought this is what has been holding milkdrop back quite a bit. I mean with just the bass mid treb stuff, milkdrop only sorta looks like it responds to the music. Bar none, the more responsive milkdrop is, the more you can actually see elements respond to certain aspects of the music, the more intelligent it (and in turn we) look(s).
Phat is offline   Reply With Quote
Old 4th November 2005, 00:36   #34
Phat
Major Dude
 
Phat's Avatar
 
Join Date: Nov 2003
Posts: 979
Most audio is going to have a steep roll off at 12KHz, and then another sharper drop off at 16KHz. This might be why over 400 seems to do little.

Considering if the bands are 43Hz each, 400 rests right at 17200.

Also compression often kills high frequencies first. I've seen several 64KB/s sound files that have nothing above 10KHz.
Phat is offline   Reply With Quote
Old 4th November 2005, 02:03   #35
redi jedi
Will code for food
 
Join Date: Mar 2005
Location: orlando
Posts: 521
@yin - we are taking the info directly from fspecleft[] witch i think is the same place the spectrum analyser comes from( they look very simmilar )

@phat - i too was getting sick of only having bass/mid/treb to work with, this should make it a little more interisting...

i'm working on re-vamping my beatdection to work off this function, with two beatrates(high,low) and everything, should be sweet!

Blah!
redi jedi is offline   Reply With Quote
Old 4th November 2005, 02:04   #36
redi jedi
Will code for food
 
Join Date: Mar 2005
Location: orlando
Posts: 521
oh and on a side note, how much more do you guys think we need to add before we have a worthwile release version?

Blah!
redi jedi is offline   Reply With Quote
Old 4th November 2005, 02:39   #37
Phat
Major Dude
 
Phat's Avatar
 
Join Date: Nov 2003
Posts: 979
Enough to make it look like it's been updated significantly to someone NOT looking at the code.

IMHO
Otherwise people might loose interest quick in it.
Phat is offline   Reply With Quote
Reply
Go Back   Winamp Forums > Visualizations > MilkDrop > MilkDrop Development

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is Off
HTML code is Off

Forum Jump