HISE Logo Forum
    • Categories
    • Register
    • Login

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

    Scheduled Pinned Locked Moved Solved Scripting
    22 Posts 3 Posters 85 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 @d.healey
      last edited by

      @d-healey ok. I'll check all of that now.

      1 Reply Last reply Reply Quote 0
      • 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

                          18

                          Online

                          1.9k

                          Users

                          12.4k

                          Topics

                          108.1k

                          Posts