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.
    • 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

                        49

                        Online

                        1.7k

                        Users

                        11.7k

                        Topics

                        101.8k

                        Posts