HISE Logo Forum
    • Categories
    • Register
    • Login

    Preset (.hip) opens empty

    Scheduled Pinned Locked Moved Bug Reports
    18 Posts 6 Posters 1.4k 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.
    • d.healeyD
      d.healey
      last edited by

      I've just been making some changes to a .hip file. I closed HISE, then re-opened it and then opened the same .hip file. The project though opens completely empty like a new project, except the master container correctly has the name of the .hip as its ID.

      Libre Wave - Freedom respecting instruments and effects
      My Patreon - HISE tutorials
      YouTube Channel - Public HISE tutorials

      Dan KorneffD 1 Reply Last reply Reply Quote 0
      • Christoph HartC
        Christoph Hart
        last edited by

        I think i need to make a Hip2XML tool so you can see whats wrong.

        You can try the debug mode and look for assertions in the meantime.

        d.healeyD 2 Replies Last reply Reply Quote 1
        • d.healeyD
          d.healey @Christoph Hart
          last edited by

          @Christoph-Hart I shall try the debug idea! What about making XML the default save format - CTRL+S?

          Libre Wave - Freedom respecting instruments and effects
          My Patreon - HISE tutorials
          YouTube Channel - Public HISE tutorials

          1 Reply Last reply Reply Quote 0
          • d.healeyD
            d.healey
            last edited by

            JUCE Assertion failure in MacroControlBroadcaster.cpp:219
            JUCE Assertion failure in Processor.cpp:156
            JUCE Assertion failure in Processor.cpp:349
            JUCE Assertion failure in Processor.cpp:393
            

            Libre Wave - Freedom respecting instruments and effects
            My Patreon - HISE tutorials
            YouTube Channel - Public HISE tutorials

            1 Reply Last reply Reply Quote 0
            • Dan KorneffD
              Dan Korneff @d.healey
              last edited by

              @d-healey if you close and reopen the file a couple of times, does it eventually load? I've seen that happen here where it'll load empty projects.

              Dan Korneff - Producer / Mixer / Audio Nerd

              d.healeyD 1 Reply Last reply Reply Quote 0
              • d.healeyD
                d.healey @Dan Korneff
                last edited by

                @dustbro said in Preset (.hip) opens empty:

                @d-healey if you close and reopen the file a couple of times, does it eventually load? I've seen that happen here where it'll load empty projects.

                No luck with this method unfortunately :(

                Libre Wave - Freedom respecting instruments and effects
                My Patreon - HISE tutorials
                YouTube Channel - Public HISE tutorials

                1 Reply Last reply Reply Quote 0
                • d.healeyD
                  d.healey
                  last edited by

                  So I remade my GUI and closed HISE. Reopened and again it wouldn't load :( I was about to cry lol. Luckily though I'd been saving as an XML instead of a .hip (xml should be default!). I ran the XML through a validator, no issues. Then I ran the UI desktop.xml though a validator and found the problem. I seem to recall coming across this a year or so ago too in a different project.

                  The problem was in a previous version of my GUI I'd used a panel as a custom button but in my new version I'd replaced the panel with an actual button control. I'd deleted the panel and given the button the same name the panel previously had. The panel though has a callbacks property which had been assigned to Clicks Only in the XML, but the button has no such property, so when I made the swap =Clicks Only got left behind in the XML for the button and prevented the GUI from loading.

                  Anyway of getting HISE to flag this kind of issue?

                  Libre Wave - Freedom respecting instruments and effects
                  My Patreon - HISE tutorials
                  YouTube Channel - Public HISE tutorials

                  1 Reply Last reply Reply Quote 1
                  • Christoph HartC
                    Christoph Hart
                    last edited by

                    Yes, sure, I'll make sure that illegal properties won't cause more harm than necessary...

                    1 Reply Last reply Reply Quote 1
                    • ossian1961O
                      ossian1961
                      last edited by

                      I had for a couple of times same issue, luckily I use make a cloned copy inside two other hard disks... it could be quite annoying (without speaking of the moment of panic for having lost the job done).

                      https://www.kontakthub.com/label/Imagik-Sound/
                      https://mirtklaar.bandcamp.com/

                      1 Reply Last reply Reply Quote 0
                      • d.healeyD
                        d.healey @Christoph Hart
                        last edited by

                        @Christoph-Hart said in Preset (.hip) opens empty:

                        I think i need to make a Hip2XML tool so you can see whats wrong.

                        I hit this problem again with another project. Can't we just get rid of the .hip format altogether?

                        I made a recovery XML but when I tried to load it I got a message about invalid xml. I fixed the invalid tag and tried to load the file into HISE again but it just opens up an empty project as does the .hip.

                        Libre Wave - Freedom respecting instruments and effects
                        My Patreon - HISE tutorials
                        YouTube Channel - Public HISE tutorials

                        hisefiloH 1 Reply Last reply Reply Quote 0
                        • hisefiloH
                          hisefilo @d.healey
                          last edited by

                          @d-healey I'm facing rhe opposite. Saved a huge xml (3.5mb) and it does not open. .hip does.

                          d.healeyD 1 Reply Last reply Reply Quote 0
                          • d.healeyD
                            d.healey @hisefilo
                            last edited by

                            @hisefilo said in Preset (.hip) opens empty:

                            @d-healey I'm facing rhe opposite. Saved a huge xml (3.5mb) and it does not open. .hip does.

                            Did you try validating the xml? - https://xmlvalidation.com/

                            Libre Wave - Freedom respecting instruments and effects
                            My Patreon - HISE tutorials
                            YouTube Channel - Public HISE tutorials

                            hisefiloH 2 Replies Last reply Reply Quote 0
                            • hisefiloH
                              hisefilo @d.healey
                              last edited by

                              @d-healey nope! Nice one. Will try it tomorrow

                              1 Reply Last reply Reply Quote 0
                              • hisefiloH
                                hisefilo @d.healey
                                last edited by hisefilo

                                @d-healey to be honest this is the only thing I don't feel comfortable with Hise. Never figured out what's the best format to properly save my work.

                                1 Reply Last reply Reply Quote 1
                                • ustkU
                                  ustk
                                  last edited by

                                  Yes I'm a bit lost too with the formats, and the menu is not clear to me neither

                                  Can't help pressing F5 in the forum...

                                  1 Reply Last reply Reply Quote 0
                                  • ustkU
                                    ustk
                                    last edited by

                                    I've seen somewhere in the forum the xml is safer to use compared to the hip
                                    In fact I don't know why the hip is made for. I use it in my sand box project so it's easy to test some code whitout loading a new project or xml every time, then when I am ready, I import the code in my main project...

                                    I had too many issues with both xml and hip not loading, so I think this way is the safest I found for me at least... but maybe some of you have a safer way to work?

                                    Also, everyday or after a big change in the code, I duplicate the entire project and keep 10 days of backups... paranoia… 😁

                                    Can't help pressing F5 in the forum...

                                    1 Reply Last reply Reply Quote 0
                                    • Christoph HartC
                                      Christoph Hart
                                      last edited by

                                      Or just use Git.

                                      It‘s weird with all projects I did I never had any issues with loading the files so if you find something reproducible let me know.

                                      1 Reply Last reply Reply Quote 0
                                      • d.healeyD
                                        d.healey
                                        last edited by Dominik Mayer

                                        The XML recovery isn't working.

                                        Here is the .hip file. I had to change the extension to mp3 so it would upload (maybe .hip should be an allowed upload format).

                                        irishWhistles.mp3
                                        irishwhistles.hip (done ;) )

                                        Here is the recovered (invalid) XML. This is missing lots of things.

                                        <?xml version="1.0" encoding="UTF-8"?>
                                        
                                        <Processor Type="SynthChain" ID="irishWhistles" Bypassed="0" Gain="1" Balance="0"
                                                   VoiceLimit="64" KillFadeTime="20" IconColour="0" packageName=""
                                                   BuildVersion="650">
                                          <EditorStates BodyShown="0" Visible="1" Solo="0" Folded="1"/>
                                          <ChildProcessors>
                                            <Processor Type="MidiProcessorChain" ID="Midi Processor" Bypassed="0">
                                              <EditorStates BodyShown="1" Visible="1" Solo="0" Folded="0"/>
                                              <ChildProcessors>
                                                <Processor Type="ScriptProcessor" ID="Interface" Bypassed="0" Script="/*&#13;&#10;    Copyright 2019 David Healey&#13;&#10;&#13;&#10;    This file is free software: you can redistribute it and/or modify&#13;&#10;    it under the terms of the GNU General Public License as published by&#13;&#10;    the Free Software Foundation, either version 3 of the License, or&#13;&#10;    (at your option) any later version.&#13;&#10;&#13;&#10;    This file is distributed in the hope that it will be useful,&#13;&#10;    but WITHOUT ANY WARRANTY; without even the implied warranty of&#13;&#10;    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the&#13;&#10;    GNU General Public License for more details.&#13;&#10;&#13;&#10;    You should have received a copy of the GNU General Public License&#13;&#10;    along with This file. If not, see &lt;http://www.gnu.org/licenses/&gt;.&#13;&#10;*/&#13;&#10;&#13;&#10;Content.makeFrontInterface(800, 580);&#13;&#10;&#13;&#10;include(&quot;manifest.js&quot;);&#13;&#10;include(&quot;settings.js&quot;);&#13;&#10;&#13;&#10;Synth.deferCallbacks(true);&#13;&#10;&#13;&#10;Engine.loadFontAs(&quot;{PROJECT_FOLDER}fonts/BLKCHCRY.TTF&quot;, &quot;blackCherry&quot;);&#13;&#10;&#13;&#10;reg i;&#13;&#10;reg lastArticulation = 0;&#13;&#10;&#13;&#10;//Dynamics\breath control&#13;&#10;const var dynamicsCC = Synth.getModulator(&quot;dynamicsCC&quot;);&#13;&#10;const var legato = Synth.getMidiProcessor(&quot;legato&quot;);&#13;&#10;const var knbDynamics = Content.getComponent(&quot;knbDynamics&quot;);&#13;&#10;knbDynamics.setControlCallback(onknbDynamicsControl);&#13;&#10;&#13;&#10;//Dynamics knobs&#13;&#10;inline function onknbDynamicsControl(control, value)&#13;&#10;{&#13;&#10;    dynamicsCC.setAttribute(dynamicsCC.DefaultValue, value);&#13;&#10;    legato.setAttribute(legato.knbBreath, value);&#13;&#10;}&#13;&#10;&#13;&#10;//Settings button&#13;&#10;inline function onbtnSettingsControl(component, value)&#13;&#10;{&#13;&#10;    Content.getComponent(&quot;pnlInstrument&quot;).set(&quot;enabled&quot;, value);&#13;&#10;&#9;Content.getComponent(&quot;fltPreset&quot;).showControl(0);&#13;&#10;&#9;Content.getComponent(&quot;pnlAbout&quot;).showControl(0);&#13;&#10;&#9;Content.getComponent(&quot;btnAbout&quot;).setValue(0);&#13;&#10;&#9;Content.getComponent(&quot;btnPreset0&quot;).setValue(0);&#13;&#10;&#9;Content.getComponent(&quot;pnlSettings&quot;).showControl(1-value);&#13;&#10;};&#13;&#10;&#13;&#10;Content.getComponent(&quot;btnSettings&quot;).setControlCallback(onbtnSettingsControl);&#13;&#10;&#13;&#10;&#13;&#10;//Curve editors&#13;&#10;const var btnCC = [];&#13;&#10;const var tblCC = [];&#13;&#10;&#13;&#10;for (i = 0; i &lt; 4; i++)&#13;&#10;{&#13;&#10;    btnCC[i] = Content.getComponent(&quot;btnCC&quot;+(i+1));&#13;&#10;    btnCC[i].setControlCallback(onbtnCCControl);&#13;&#10;    tblCC[i] = Content.getComponent(&quot;tblCC&quot;+(i+1));&#13;&#10;}&#13;&#10;&#13;&#10;inline function onbtnCCControl(control, value)&#13;&#10;{&#13;&#10;    local idx = btnCC.indexOf(control);&#13;&#10;    &#13;&#10;    local params = [&quot;Expression&quot;, &quot;Dynamics&quot;, &quot;Vibrato Intensity&quot;, &quot;Vibrato Rate&quot;];&#13;&#10;&#13;&#10;    for (i = 0; i &lt; tblCC.length; i++)&#13;&#10;    {&#13;&#10;        tblCC[i].showControl(false);&#13;&#10;        btnCC[i].setValue(false);&#13;&#10;    }&#13;&#10;&#13;&#10;    tblCC[idx].showControl(value);&#13;&#10;    btnCC[idx].setValue(value);&#13;&#10;    &#13;&#10;    //Show velocity table if value is false&#13;&#10;    Content.getComponent(&quot;tblCC0&quot;).showControl(1-value);&#13;&#10;    &#13;&#10;    //Set parameter label&#13;&#10;    if (value == 1)&#13;&#10;        Content.getComponent(&quot;lblParam&quot;).set(&quot;text&quot;, params[idx]);&#13;&#10;    else&#13;&#10;        Content.getComponent(&quot;lblParam&quot;).set(&quot;text&quot;, &quot;Velocity&quot;);&#13;&#10;        &#13;&#10;    //Show velocity dynamics button if dynamics is selected&#13;&#10;    Content.getComponent(&quot;btnVelDynamics&quot;).showControl(idx == 1 &amp;&amp; value == 1);&#13;&#10;    Content.getComponent(&quot;lblVelocityControl&quot;).showControl(idx == 1 &amp;&amp; value == 1);&#13;&#10;}&#13;&#10;&#13;&#10;//About screen&#13;&#10;inline function onbtnAboutControl(component, value)&#13;&#10;{&#13;&#10;    Content.getComponent(&quot;pnlInstrument&quot;).set(&quot;enabled&quot;, 1-value);&#13;&#10;&#9;Content.getComponent(&quot;fltPreset&quot;).showControl(0);&#13;&#10;&#9;Content.getComponent(&quot;pnlAbout&quot;).showControl(value);&#13;&#10;&#9;Content.getComponent(&quot;pnlSettings&quot;).showControl(0);&#13;&#10;&#9;Content.getComponent(&quot;btnSettings&quot;).setValue(1);&#13;&#10;};&#13;&#10;&#13;&#10;Content.getComponent(&quot;btnAbout&quot;).setControlCallback(onbtnAboutControl);&#13;&#10;&#13;&#10;&#13;&#10;//Preset handling&#13;&#10;&#13;&#10;//Get samplers&#13;&#10;const var samplerIds = Synth.getIdList(&quot;Sampler&quot;);&#13;&#10;const var childSynths = {};&#13;&#10;&#13;&#10;for (s in samplerIds)&#13;&#10;{&#13;&#10;    childSynths[s] = Synth.getChildSynth(s);&#13;&#10;}&#13;&#10;&#13;&#10;//Preset buttons&#13;&#10;inline function onbtnPreset0Control(component, value)&#13;&#10;{&#13;&#10;    Content.getComponent(&quot;pnlInstrument&quot;).set(&quot;enabled&quot;, 1-value);&#13;&#10;&#9;Content.getComponent(&quot;fltPreset&quot;).showControl(value);&#13;&#10;&#9;Content.getComponent(&quot;pnlAbout&quot;).showControl(0);&#13;&#10;&#9;Content.getComponent(&quot;btnAbout&quot;).setValue(0);&#13;&#10;&#9;Content.getComponent(&quot;pnlSettings&quot;).showControl(0);&#13;&#10;&#9;Content.getComponent(&quot;btnSettings&quot;).setValue(1);&#13;&#10;};&#13;&#10;&#13;&#10;Content.getComponent(&quot;btnPreset0&quot;).setControlCallback(onbtnPreset0Control);&#13;&#10;&#13;&#10;inline function loadAdjacentPreset(control, value)&#13;&#10;{&#13;&#10;    if (value == 1)&#13;&#10;    {&#13;&#10;        local idx = btnPreset.indexOf(control);&#13;&#10;        idx == 0 ? Engine.loadPreviousUserPreset(false) : Engine.loadNextUserPreset(false);&#13;&#10;        Content.getComponent(&quot;lblPreset&quot;).set(&quot;text&quot;, Engine.getCurrentUserPresetName());&#13;&#10;    }&#13;&#10;}&#13;&#10;&#13;&#10;const var btnPreset = [];&#13;&#10;btnPreset[0] = Content.getComponent(&quot;btnPreset1&quot;).setControlCallback(loadAdjacentPreset);&#13;&#10;btnPreset[1] = Content.getComponent(&quot;btnPreset2&quot;).setControlCallback(loadAdjacentPreset);&#13;&#10;&#13;&#10;//Patch selection and loading drop down&#13;&#10;const var cmbPatches = Content.getComponent(&quot;cmbPatches&quot;);&#13;&#10;cmbPatches.setControlCallback(oncmbPatchesControl);&#13;&#10;&#13;&#10;inline function oncmbPatchesControl(control, value)&#13;&#10;{&#13;&#10;    local patch = control.getItemText();&#13;&#10;&#13;&#10;    colourKeys(patch);&#13;&#10;    loadSampleMaps(patch);&#13;&#10;    &#13;&#10;    if(Engine.getCurrentUserPresetName() == &quot;&quot;)&#13;&#10;        Content.getComponent(&quot;lblPreset&quot;).set(&quot;text&quot;, &quot;Default&quot;);&#13;&#10;    else&#13;&#10;        Content.getComponent(&quot;lblPreset&quot;).set(&quot;text&quot;, Engine.getCurrentUserPresetName());&#13;&#10;}&#13;&#10;&#13;&#10;//Populate patch selection drop down&#13;&#10;const var patches = [];&#13;&#10;&#13;&#10;for (k in Manifest.patches)&#13;&#10;{&#13;&#10;    patches.push(k);&#13;&#10;}&#13;&#10;&#13;&#10;cmbPatches.set(&quot;items&quot;, patches.join(&quot;\n&quot;));&#13;&#10;&#13;&#10;inline function colourKeys(patch)&#13;&#10;{&#13;&#10;    local range = Manifest.patches[patch].range;&#13;&#10;&#13;&#10;    for (i = 0; i &lt; 127; i++)&#13;&#10;    {&#13;&#10;        if (i &gt;= range[0] &amp;&amp; i &lt;= range[1])&#13;&#10;        {&#13;&#10;            Engine.setKeyColour(i, Colours.withAlpha(Colours.white, 0.0)); //Light key colour&#13;&#10;        }&#13;&#10;        else&#13;&#10;        {&#13;&#10;            Engine.setKeyColour(i, Colours.withAlpha(Colours.black, 0.5)); //Dark key colour&#13;&#10;        }&#13;&#10;    }&#13;&#10;}&#13;&#10;&#13;&#10;inline function loadSampleMaps(patch)&#13;&#10;{&#13;&#10;    local sampleMaps = Sampler.getSampleMapList();&#13;&#10;&#13;&#10;    for (id in samplerIds) //Each sampler&#13;&#10;    {&#13;&#10;      //A sample map for this patch was found or sampler is transition sampler&#13;&#10;      if (sampleMaps.contains(patch + &quot;_&quot; + id) || id == &quot;transitions&quot;)&#13;&#10;      {&#13;&#10;        childSynths[id].setBypassed(false); //Enable sampler&#13;&#10;&#13;&#10;        if (id == &quot;transitions&quot;)&#13;&#10;        {&#13;&#10;            childSynths[id].asSampler().loadSampleMap(patch + &quot;_staccato&quot;); //Load staccato sample map&#13;&#10;        }&#13;&#10;        else&#13;&#10;        {&#13;&#10;            childSynths[id].asSampler().loadSampleMap(patch + &quot;_&quot; + id); //Load the sample map&#13;&#10;        }&#13;&#10;      }&#13;&#10;      else&#13;&#10;      {&#13;&#10;        childSynths[id].setBypassed(true); //Bypass sampler&#13;&#10;        childSynths[id].asSampler().loadSampleMap(&quot;empty&quot;); //Load empty sample map for this sampler&#13;&#10;      }&#13;&#10;    }&#13;&#10;}function onNoteOn()&#10;{&#10;&#9;&#10;}&#10;function onNoteOff()&#10;{&#10;&#9;&#10;}&#10;function onController()&#10;{&#10;&#9;&#10;}&#10;function onTimer()&#10;{&#10;&#9;&#10;}&#10;function onControl(number, value)&#10;{&#10;&#9;&#10;}&#10;">
                                                  <EditorStates BodyShown="1" Visible="1" Solo="0" contentShown="1" onInitOpen="1"/>
                                                  <ChildProcessors/>
                                                  <Content>
                                                    <Control type="ScriptSlider" id="knbRel" value="250"/>
                                                    <Control type="ScriptSlider" id="knbStacc" value="-2.9999986"/>
                                                    <Control type="ScriptButton" id="btnBreath" value="0"/>
                                                    <Control type="ScriptButton" id="btnRR" value="0"/>
                                                    <Control type="ScriptLabel" id="lblVelocityControl" value="Velocity Control"/>
                                                    <Control type="ScriptButton" id="btnVelDynamics" value="0"/>
                                                    <Control type="ScriptSlider" id="knbExpression" value="127"/>
                                                    <Control type="ScriptSlider" id="knbDynamics" value="127"/>
                                                    <Control type="ScriptSlider" id="knbVibIntensity" value="16"/>
                                                    <Control type="ScriptSlider" id="knbVibratoRate" value="90"/>
                                                    <Control type="ScriptButton" id="btnCC1" value="0"/>
                                                    <Control type="ScriptButton" id="btnCC2" value="0"/>
                                                    <Control type="ScriptButton" id="btnCC3" value="0"/>
                                                    <Control type="ScriptButton" id="btnCC4" value="0"/>
                                                    <Control type="ScriptLabel" id="lblParam" value="Velocity"/>
                                                    <Control type="ScriptTable" id="tblCC0" value="127" data="24...............vO...f+....9C...vO"/>
                                                    <Control type="ScriptTable" id="tblCC1" value="23" data="24...............vO...f+....9C..3rO"/>
                                                    <Control type="ScriptTable" id="tblCC2" value="0" data="36...............vO....+PMvd6C..3rO...f+....9C..jwO"/>
                                                    <Control type="ScriptTable" id="tblCC3" value="0" data="24...............vO...f+....9C..jwO"/>
                                                    <Control type="ScriptTable" id="tblCC4" value="0" data="24...............vO...f+....9C..nqO"/>
                                                    <Control type="ScriptSlider" id="knbGain" value="1.4901161e-06"/>
                                                    <Control type="ScriptSlider" id="knbPan" value="0"/>
                                                    <Control type="ScriptSlider" id="knbCoarse" value="0"/>
                                                    <Control type="ScriptSlider" id="knbFine" value="0"/>
                                                    <Control type="ScriptLabel" id="lblPreset" value="Default"/>
                                                    <Control type="ScriptComboBox" id="cmbPatches" value="1"/>
                                                    <Control type="ScriptSlider" id="knbTransition" value="-11.999999"/>
                                                  </Content>
                                                  <UIData>
                                                    <ContentProperties DeviceType="Desktop">
                                                      <Component type="ScriptImage" id="imgBgEmpty" x="0" y="0" width="800" height="600"
                                                                 fileName="{PROJECT_FOLDER}Background_empty.png" scale=".5" text="imgBlankBg"/>
                                                      <Component type="ScriptPanel" id="pnlInstrument" x="0" y="0" width="800"
                                                                 height="580" itemColour="0" itemColour2="0" bgColour="0" textColour="0"
                                                                 borderSize="0">
                                                        </>
                                                      </Component>
                                                    </ContentProperties>
                                                  </UIData>
                                                </Processor>
                                              </ChildProcessors>
                                            </Processor>
                                          </ChildProcessors>
                                        </Processor>
                                        

                                        The recovery file is written to the presets folder but when you use File >> Open XML it defaults to the XmlPresetBackups folder, so maybe that would be a better location to place the recovery xml.

                                        Libre Wave - Freedom respecting instruments and effects
                                        My Patreon - HISE tutorials
                                        YouTube Channel - Public HISE tutorials

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

                                        55

                                        Online

                                        1.7k

                                        Users

                                        11.7k

                                        Topics

                                        101.8k

                                        Posts