HISE Logo Forum
    • Categories
    • Register
    • Login

    Preset (.hip) opens empty

    Scheduled Pinned Locked Moved Bug Reports
    18 Posts 6 Posters 1.5k 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.

        Free HISE Bootcamp Full Course for beginners.
        YouTube Channel - Public HISE tutorials
        My Patreon - 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/

            Free HISE Bootcamp Full Course for beginners.
            YouTube Channel - Public HISE tutorials
            My Patreon - 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

                  Hise made me an F5 dude, browser just suffers...

                  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… 😁

                    Hise made me an F5 dude, browser just suffers...

                    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.

                        Free HISE Bootcamp Full Course for beginners.
                        YouTube Channel - Public HISE tutorials
                        My Patreon - HISE tutorials

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

                        33

                        Online

                        2.0k

                        Users

                        12.7k

                        Topics

                        110.1k

                        Posts