Announcement

Collapse
No announcement yet.

MilkDrop2077 : a free and open-source presets masher and randomizer for MilkDrop

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • MilkDrop2077 : a free and open-source presets masher and randomizer for MilkDrop

    Hey guys,
    MilkDrop2077 is a free and open-source presets tool for MilkDrop.

    It can mashup code from Frame/Pixel/Warp/Comp, randomize values in a smart way,
    change colors, add effects and soon autogenerate presets.



    download: https://mega.nz/folder/VFFGUJYB#pPNXxLPIstNE6WzqCWCAJg
    MilkDrop 2077.exe MD5:AE40AF0F2795EA58C0DDDF532920FCD4

    How to use it :
    1. select your favorite presets folder (input folder)
    2. select the output folder (were the new generated presets will be created)
    3. select how many presets would you like to create (defaut 100, 1 to 9999)
    4. choose the level of randomization (0 to 5), check the options menu for more controls
    5. click on GO!

    How I use it
    I create 500 presets, load MilkDrop2077.0001, press the 'r' key to load in SEQUENTIAL order, and press h,h,h...
    You can go fast and comeback if you see something good (not like pressing the 'a' key in milkdrop!)

    Don't expect all the new created presets to all looks amazing, a lot of them looks average or broken,
    some will be corrupt, but with a good input folder and a bit of luck, you can create something beautiful and 'new'.

    Check the exemple.zip I've included 50 presets created with MilkDrop2077,
    I've lost track about how much they've been mashed or randomized, but they look pretty amazing to me.
    What is really cool if how the randomized value will affect the motion/colors/wave form ect.


    Source code here : https://github.com/milkdrop2077 (the code is in the Unit1.pas file).
    it's coded with delphi7, and the good news is, even if you don't code, you could recompile and modify the program easily :
    delphi = pascal = same syntax than milkdrop preset
    I've used only standards function and component, so the source will compile without any error, it should be nothing like trying to compile the C++ vis_milk2.dll

  • #2
    Haha, great ! And funny !

    In case anybody would like to recompile this but can't afford Delphi, try Lazarus, an open source and cross platform Pascal IDE, virtually 100% Delphi compatible
    Lazarus is a professional open-source cross platform IDE powered by Free Pascal

    Comment


    • #3
      I'm not sure it will compile with lazarus, but you can try!
      Delphi 7 is so old I think it is kind of an abandonware now. check Delphi 7 lite.

      For those who think they don't need MilkDrop2077 because they can write their own presets,
      think about that : you can create in less than a second hundreds of slightly different variant of a preset you've been working on, you'll probably find some results interesting


      I've updated the exe to version 1.0.2 (MD5:46CED7BC9F938965ECE3ED56A87EF621) because I've just found a bug when writing the first line for the PSVERSION=, PSVERSION_WARP=, PSVERSION_COMP=.

      By the way what PSVERSION= should be when you mash yourself a preset?
      I've put the highest number between PSVERSION_WARP= and PSVERSION_COMP= ...


      I will try to update the code to create all the presets without any error and warning.
      I'm not sure how to track an error sometimes, milkdrop's warning aren't very user friendly.
      If you want to help and find out why a preset is corrupt, check the header of the created preset, you'll find lots of information.

      I know there is 2 main problems with my code :
      some variables a over the limit : example : mv_a must be between 0 and 1.
      so I guess I'll have to add a loop to check all the variables from milkdrop_preset_authoring.html ?

      Also the way I mash-up the Wave & Shape + Per Frame + Per Pixel + Warp code + Comp code:
      I'm adding all the lines until I find per_frame_
      then I'm adding all the per_frame_ lines from another preset
      then I'm adding all the per_pixel_ lines from another preset
      then I'm adding all the warp_ lines from another preset
      then I'm adding all the comp_ lines from another preset

      I guess it's a little too much and some variables get mixed-up? because milkdrop only mash warp+comp. But it works 90% of the time!

      Also I need to update the code to works on complicated lines like :
      comp_88=`blk *= (q12*(1/rad2+q15*mask2)+q13*(1/rad3+q15*mask3))/2 ;
      to be able to change just the number in bold, I guess I'll have to write a loop to make sure the number are between certain character like +-/*()

      Comment


      • #4
        Oh wow, me and a friend were just discussing this the other day! Well not exactly this but along the same lines.

        We were discussing how awesome it would be if someone applies all the modern advancements in AI/ML/DNN such as generative adversarial networks to Milkdrop and create a distributed system (like electric sheep) or a cloud based engine that would take contemporary zeitgeist as input to give us unlimited visuals. Milkdrop itself could also use AI chops on modern processors to intelligently blend visuals for a seamless transition.

        It's fun to talk sci-fi in a certain mood of the evening esp under the spell of Milkdrop visuals But glad that MD still has the interest of developers. People say I am too old-school to still care about music visualizers.

        Comment


        • #5
          Windows does not run your exe because it detects a virus or PUP. So I had to recompile anyway.

          I'm not sure it will compile with lazarus, but you can try!
          Compiles and runs without problems in Lazarus 2.0.0. All you need to do is rename project1.dpr to project1.lpi.

          You should reconsider your color scheme, though. The black on dark violet checkbox text in the options menu is absolutely illegible on my screen.
          Attached Files

          Comment


          • #6
            Windows does not run your exe because it detects a virus or PUP. So I had to recompile anyway.
            ah crap! I've checked on virustotal, yes there are a few false positive.
            Windows defender is ok with my file.
            It is the V2M player from farbrausch, it was made for 64kb demo like Candytron,
            and it's been used in a lot of cracks and keygens, hence the red-flag by some antivirus

            whitelist my exe or at least run it sandboxed once, you have to check the aboutbox it's the best part of MilkDrop2077

            The colors look fine when compiled with Delphi


            I've updated the code to v1.0.2 on github btw.

            Comment


            • #7
              Alright, I've asked on the Lazarus forum what the problem with the checkbox textcolor is:

              "This is a limitation of themed painting in Windows - even in Delphi XE 10.3 these checkbox texts have black text. You can work around the issue by turning off the theme services - this is done in the project options, box "Use manifest resource"."

              That did the trick and it's fine now. I'll start tinkering with it.

              The aboutbox ?
              The ABOUT button does nothing... no wonder as it is linked to an empty procedure

              procedure TForm1.ImgABOUTClick(Sender: TObject);
              begin
              //about box
              end;

              at least in the source I downloaded two days ago...

              Comment


              • #8
                Hm, the mashups often throw shader error X3014: "incorrect number of arguments to numeric-type constructor" . I found an example in the code
                code:
                float3 dots=2*float3(1,1,0,1,2,1)
                That should be easy to fix.

                Comment


                • #9
                  Yea sorry I didn't include the about box in the source because it's over 2000 lines of code, 88 different visual effect in total it's my little signature and this part is not open-source yet

                  Hm, the mashups often throw shader error X3014: "incorrect number of arguments to numeric-type constructor" .
                  ok cool I'll look into that

                  Comment


                  • #10
                    You should also do something about the false positive. Not everyone will be willing to compile the source himself, and the windows defender message about a serious trojan is rather alarming; besides, windows deletes the exe straightaway.

                    Comment


                    • #11
                      You should also do something about the false positive. Not everyone will be willing to compile the source himself, and the windows defender message about a serious trojan is rather alarming; besides, windows deletes the exe straightaway.
                      I've just realized I can't even switch to an XM or MOD player, I get even more false positive results

                      it was the most epic aboutbox ever, rip


                      I'll change the code for v1.2, I'll use the windows Beep function to make music , I need to fix the error X3014

                      Comment


                      • #12
                        I see. Reminds me of the old days, the demoscene, the mod archive, 8bit sound via the parallel printer port... But you won't get it that atmospheric with the beeper ! Can't you simply convert to a wav file and play that ? There are enough sound libraries for use with pascal, and if you need help, the freepascal forum is the right place to ask.

                        Comment


                        • #13
                          Hey Nitorami what's your Antivirus? I've tried my exe on a windows 10 laptop with MS defender and another one with ESET Antivirus and I did not have any warning.

                          I've uploaded an empty project delphi7 exe to virustotal and I still have a few false positive. I thought for a second I had a virus in SysConst.dcu (very rare and almost impossible on my setup) but no, any old delphi exe gives fake positive result on virustotal (i've tried a few from random program on torry ex : https://torry.net/pages.php?id=345).

                          0 problems on Jotti's malware scan. Virustotal use too many crap engines.

                          So yea, bad antivirus gives fakes positive results. you should consider switching to MS defender, it was the worth few years ago but now it's the best / one of the best.



                          I've updated the code to v1.0.3 and corrected 2 bugs.
                          Now 98% of the presets generated are working fine

                          Comment


                          • #14
                            I have no Antivirus installed here. Just native Windows 10.

                            Comment


                            • #15
                              No AV problems either when compiling with Lazarus. Why don't you simply switch to a modern compiler ? I mean, Delphi7 is really obsolete, and Lazarus is free, legal and very similar to use. And it does not cause Antivirus alarms. The exe is 10x bigger, yes, looks bloated but well, times are changing, and the APIs are just getting bigger and bigger.

                              I tried your modified unit1.pas but still get many files with the same error, a float3 being assigned to 6 floats. Could this possibly have to do with langage settings and the f*ing decimal separator ? It was one of MS' worst ideas ever to make this country specific and it keeps causing trouble as some programs respect windows settings, others don't. It is a bloody mess. I'm in germany where the default decimal separator is a comma but have changed my windows settings to default english. Milkdrop does not bother in the first place, but I don't know what Lazarus does. It may be remote but could it be that the 6 decimal values in x = float3 (1,2,0,1,3,2) should really be (1.2, 0.1, 3.2) ?

                              Comment

                              Working...
                              X
                              😀
                              🥰
                              🤢
                              😎
                              😡
                              👍
                              👎