HISE Logo Forum
    • Categories
    • Register
    • Login

    Copy & Save '.mid file' to 'folder' || Help.

    Scheduled Pinned Locked Moved Solved Scripting
    22 Posts 3 Posters 87 Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • ChazroxC
      Chazrox
      last edited by Chazrox

      This is where im at now, still not working completely. All of the functions work in this code block except for the part where I want the dropped file saved to the AppData folder. Can anyone help with this please? 🙏

      Scroll down a little bit...

      //! onPnlMIDIFilesFileDrop ---------------------------------------------------------------
      inline function onpnlMIDIFilesFileDrop_B(obj)
      {
          // HOVER STATE
          prevHover = this.data.hover ? 1 : 0;
      
          this.data.hover = (obj.hover && !obj.drop) ? 1 : 0;
      
          if ((this.data.hover ? 1 : 0) != prevHover)
          {
          	this.repaint();
          }
      
          // HOVER CHECK
          if (obj.hover && !obj.drop)
          {
              this.data.text    = "Drop to load!";
              this.data.dropped = false;
              this.changed();
              return;
          }
         
          if (!obj.drop || obj.fileName == undefined)
          {
          	return;	
          }
      
          // PARSE BASE NAME
          local full = obj.fileName;   
          local slash = Math.max(full.lastIndexOf("/"), full.lastIndexOf("\\"));   
          local dot = full.lastIndexOf(".");
          
          if (dot < 0) 
          {
          	dot = full.length;
          }
          
          local base = full.substring(slash + 1, dot);
      
          this.data.filename = base;   // paint()
          this.data.fileName = base;   // sync
      	
      	Console.print("BASE__" + base);
          // HIDE RANGE SLIDER WHILE NO EVENTS
          RangeSlider.set("visible", 0);
      
          // LOAD MIDI PLAYER TRACK 1
          MIDIPlayer1.setFile(full, true, true);
          if (MIDIPlayer1.setTrack != undefined) MIDIPlayer1.setTrack(1);
      		
      	// START POLLING EVENTS
      	midiRangeTimer.stopTimer();
      	midiRangeTimer.startTimer(50);
          // -----------------------------------------------------------
          // COPY DROPPED FILE INTO AppData 
          // -----------------------------------------------------------
         
      	local original = FileSystem.fromAbsolutePath(full);
      	local filename =  original.toString(this.data.Filename);
          if (isDefined(original) && original.isFile())
          {
                    
      		Console.print(filename.toString());
             	Console.print("ORIGINAL__" + original);
              
              local appDataDir = FileSystem.getFolder(FileSystem.Downloads);
              local newFile = appDataDir.getChildFile(filename);
      
              original.copy(newFile);
             // newFile.move(appDataDir);
      		Console.print("NEWNEWNEW" + newFile);
          }
      	
          Console.print("Saved copy to AppData: " + newFile.toString(newFile.FullPath));
      	
      		
         
          // Save As "FAVORITE" Midi File in AppDataFolder
          // SaveFavoriteMidiFiles();
      
          // setAnalysisWindowFull();
          disableAllChords();
          // groupMidiNotesByTimeInWindow(analyzeStartMs, analyzeEndMs);
          // RangeSlider.setValue({ min: RangeSlider.get("min"), max: RangeSlider.get("max")});
          disableAllChords();
          // addChordsFromCurrentWindow();
      
          // UI flags
          this.data.text    = "Loaded";
          this.data.dropped = true;
          this.data.hover   = false;
          this.changed();
          this.repaint();
      
          knbSmartStrength.changed();
          pnlCustomMidiPanel.sendRepaintMessage();
          pnlCustomMidiRipView.sendRepaintMessage();
      }
      

      none of my .prints return any results in that section either.

      LindonL 1 Reply Last reply Reply Quote 0
      • LindonL
        Lindon @Chazrox
        last edited by

        @Chazrox said in Copy & Save '.mid file' to 'folder' || Help.:
        [snip]

        Ok lets start with your code...

        
        
            // PARSE BASE NAME
            local full = obj.fileName;   
        }
        

        and later:

        local original = FileSystem.fromAbsolutePath(full);
        

        So you are taking the filename from the obj and (later)asking for the actual file using .fromAbsolutePath()

        ..but absolute path wants just that - an absolute path not the file name....so something like C:\documents\myfolder\myfilename.mid

        so this:

        local original = FileSystem.fromAbsolutePath(full);
        

        is probably failing - I think. so this:

        if (isDefined(original) && original.isFile())
            {
        
            etc. etc...
        

        is going to return false - and not execute....you need to do a LOT more Console.print debugging....

        like this:

        //! onPnlMIDIFilesFileDrop ---------------------------------------------------------------
        inline function onpnlMIDIFilesFileDrop_B(obj)
        {
            // HOVER STATE
            prevHover = this.data.hover ? 1 : 0;
        
            this.data.hover = (obj.hover && !obj.drop) ? 1 : 0;
        
            if ((this.data.hover ? 1 : 0) != prevHover)
            {
            	this.repaint();
            }
        
            // HOVER CHECK
            if (obj.hover && !obj.drop)
            {
                this.data.text    = "Drop to load!";
                this.data.dropped = false;
                this.changed();
                return;
            }
           
            if (!obj.drop || obj.fileName == undefined)
            {
            	return;	
            }
        
            // PARSE BASE NAME
            local full = obj.fileName;   
            local slash = Math.max(full.lastIndexOf("/"), full.lastIndexOf("\\"));   
            local dot = full.lastIndexOf(".");
        
        //============
             Console.print("full contains:" + full);
        //=============
            
            if (dot < 0) 
            {
            	dot = full.length;
            }
            
            local base = full.substring(slash + 1, dot);
        
            this.data.filename = base;   // paint()
            this.data.fileName = base;   // sync
        	
        	Console.print("BASE__" + base);
            // HIDE RANGE SLIDER WHILE NO EVENTS
            RangeSlider.set("visible", 0);
        
            // LOAD MIDI PLAYER TRACK 1
            MIDIPlayer1.setFile(full, true, true);
            if (MIDIPlayer1.setTrack != undefined) MIDIPlayer1.setTrack(1);
        		
        	// START POLLING EVENTS
        	midiRangeTimer.stopTimer();
        	midiRangeTimer.startTimer(50);
            // -----------------------------------------------------------
            // COPY DROPPED FILE INTO AppData 
            // -----------------------------------------------------------
           
        	local original = FileSystem.fromAbsolutePath(full);
        //===========
              Console.print("Original contains:" + original);
              Console.print("Original is defined ==:" + isDefined(original));
               Console.print("Original is a file ==:" + original.isFile());
        //===========
        	local filename =  original.toString(this.data.Filename);
            if (isDefined(original) && original.isFile())
            {
                      
        		Console.print(filename.toString());
               	Console.print("ORIGINAL__" + original);
                
                local appDataDir = FileSystem.getFolder(FileSystem.Downloads);
                local newFile = appDataDir.getChildFile(filename);
        
                original.copy(newFile);
               // newFile.move(appDataDir);
        		Console.print("NEWNEWNEW" + newFile);
            }
        	
            Console.print("Saved copy to AppData: " + newFile.toString(newFile.FullPath));
        	
        		
           
            // Save As "FAVORITE" Midi File in AppDataFolder
            // SaveFavoriteMidiFiles();
        
            // setAnalysisWindowFull();
            disableAllChords();
            // groupMidiNotesByTimeInWindow(analyzeStartMs, analyzeEndMs);
            // RangeSlider.setValue({ min: RangeSlider.get("min"), max: RangeSlider.get("max")});
            disableAllChords();
            // addChordsFromCurrentWindow();
        
            // UI flags
            this.data.text    = "Loaded";
            this.data.dropped = true;
            this.data.hover   = false;
            this.changed();
            this.repaint();
        
            knbSmartStrength.changed();
            pnlCustomMidiPanel.sendRepaintMessage();
            pnlCustomMidiRipView.sendRepaintMessage();
        }
        

        HISE Development for hire.
        www.channelrobot.com

        LindonL ChazroxC 3 Replies Last reply Reply Quote 1
        • LindonL
          Lindon @Lindon
          last edited by

          @Lindon said in Copy & Save '.mid file' to 'folder' || Help.:

          local filename = original.toString(this.data.Filename);

          also whilst we are here, Im not sure you can say this:

          
          	local filename =  original.toString(this.data.Filename);
          

          what I think you mean is this:

          
          	local filename =  original.toString(original.Filename);
          

          But its not going to work anyway until you get a file into original, not a text string...

          HISE Development for hire.
          www.channelrobot.com

          ChazroxC 2 Replies Last reply Reply Quote 2
          • ChazroxC
            Chazrox @Lindon
            last edited by Chazrox

            @Lindon bro Thanks!

            Im gonna check this out right now and report back. 🙏
            I really appreciate the time brotha!

            These are a bunch of new api's for me so im sure I made alot of mistakes and asking chat gpt to help sometimes make things worse. lol

            1 Reply Last reply Reply Quote 0
            • ChazroxC
              Chazrox @Lindon
              last edited by

              @Lindon said in Copy & Save '.mid file' to 'folder' || Help.:

              you need to do a LOT more Console.print debugging....

              I really should. 🙏

              1 Reply Last reply Reply Quote 0
              • ChazroxC
                Chazrox @Lindon
                last edited by Chazrox

                @Lindon

                I was setting my B panels callback to my A panel....thats why none of my prints were hitting. When I was dropping on panel B, Panel A script was running which is already doing what it needs to do fine.

                uhggh.. lol.
                its one letter sometimes messing your whole day up. haha.

                const var pnlMIDIFiles_B = Content.getComponent("pnlMIDIFiles_B");
                pnlMIDIFiles_B.setFileDropCallback("All Callbacks", "*.mid", onpnlMIDIFilesFileDrop_B);
                
                

                Your prints you added are extensive and im going to follow that from now on! Thank You sir! Im getting alot of info from these prints which I should help big time. Again 🙏

                Screenshot 2025-08-31 at 4.22.36 AM.png

                1 Reply Last reply Reply Quote 0
                • ChazroxC
                  Chazrox @Lindon
                  last edited by Chazrox

                  @Lindon @d-healey I GOT IT. 🙏 🙏 🙏

                  After going through all the debugs I figured it out. Thank you guys so much. This was the last function I needed for my plugin which is just save a history of dropped files...and aside from some visual tweaks.....IM DONE!! Im on to the next step. Now i'll be buggin you guys about code-signing soon. haha. 🤛 Thanks so much!

                  1 Reply Last reply Reply Quote 1
                  • ChazroxC Chazrox has marked this topic as solved
                  • ChazroxC
                    Chazrox
                    last edited by

                    I'll be sharing a cleaned up snippet version and make an example of this for anybody that might be looking for it. Thanks again guys! 🙏

                    1 Reply Last reply Reply Quote 0
                    • ChazroxC
                      Chazrox
                      last edited by Chazrox

                      This post is deleted!
                      1 Reply Last reply Reply Quote 0
                      • ChazroxC
                        Chazrox
                        last edited by

                        Keyzie Midi Drop And Save Working.gif

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post

                        21

                        Online

                        1.9k

                        Users

                        12.4k

                        Topics

                        108.1k

                        Posts