• Custom Build Settings for Xcode

    Solved
    7
    0 Votes
    7 Posts
    472 Views
    O

    @aaronventure Simply updating to the latest release did fix the issue. I can now export through HISE without having to edit the auto-built Xcode project.

    BUT I was reminded of why I have been sticking with the release from September 2023. I have a separate project that uses FAUST and Scriptnodes. The newer versions of HISE crashes immediately upon trying to load this project. Can't remember if it is FAUST or Scriptnodes that causes this.

    Solved one issue, and rediscovered another. I'll mark this post as solved since the main focus was resolved.

  • Audio into Hise

    17
    0 Votes
    17 Posts
    1k Views
    DanHD

    @Christoph-Hart oh whoops! Thanks :)

  • This topic is deleted!

    2
    0 Votes
    2 Posts
    50 Views
  • This topic is deleted!

    1
    0 Votes
    1 Posts
    103 Views
    No one has replied
  • Shoutout: DMGCanvas

    17
    4 Votes
    17 Posts
    901 Views
    JayJ

    @Christoph-Hart waiting on the Multipage Creator

  • This topic is deleted!

    1
    0 Votes
    1 Posts
    10 Views
    No one has replied
  • AudioFiles not Saved in Presets

    2
    0 Votes
    2 Posts
    144 Views
    d.healeyD

    @meto396 The preset only saves/restores the state of the controls on your UI (with some exception). To get it to store/restore your audio files you'll need to add UI waveform controls that are saved in the preset. The other way to do it is to manage the loading of the files through scripting, but you'll still need some control saved in the preset to trigger this.

  • Hise don't work as aspected anymore, multiple problems

    19
    0 Votes
    19 Posts
    625 Views
    M

    @HISEnberg
    From the post:
    "Compile this configuration. HISE will have a text label in the top bar indicating that Faust is enabled."
    👍 Done.
    "Then you just need to add the directory of the Faust installation to your HISE settings under FaustPath so that it can find the Faust libraries and you're good to go."
    👍 Done.

    4b26cd84-d186-48b9-b2e1-9570d66ecfca-image.png

    So I can assume that the error is in my workflow

  • Add Module State to User Preset - Help!

    Solved
    6
    0 Votes
    6 Posts
    424 Views
    HISEnbergH

    @Christoph-Hart Also I thought it would fix this other issue I am having but it seems to be related to something else.

    I have a few FX networks that are modulation based (auto-panner, flanger, chorus, vibrato, etc.). These networks, compiled, work fine in other projects. However in this specific project, their modulation rates keep getting tossed to the maximum on every new note.

    I really have no idea why (the ScriptFx works perfectly fine). Tracking their states in the Console shows them at the correct values. I removed any scripts I thought may be interefering with them. Are there any other modules (Midi, FX) or nodes in scriptnode that could cause this issue (maybe the converter, core.oscillator or temposync)?

  • Gain LFO and Pitch LFO - Not Assigned

    4
    0 Votes
    4 Posts
    245 Views
    d.healeyD

    @Onik-Sisodiya Make a minimal snippet that demonstrates the issue, post it here, and I'll take a look.

  • Woocommerce linked licensing system for your plugins

    91
    7 Votes
    91 Posts
    8k Views
    F

    @bendurso Hi again! Doing a little update here. So we got a few great updates since last we spoke.
    Now you can have a list of distributors to sell your products in other stores like plugin boutique or thomann etc. and make the whole process automated.

    Also Offline activation now is possible, remote deactivation of hosts from the users account, license blocking and many other little things that can be used like offering free plugins through the distribution system.

    Soon I heard they'll add a really detailed analytics to collect necessary data to improve the products.

    Feel free to try it in a test server using Postman!

  • Invalid JUCE Module Path when exporting

    49
    0 Votes
    49 Posts
    2k Views
    d.healeyD

    @weezycarter oh I've just figured it out. After you converted your sample maps to monoliths you needed to recompile so that the binary contained the updated sample maps.

  • How to use panels to switch between groups of samplers?

    16
    0 Votes
    16 Posts
    527 Views
    d.healeyD

    @cadrose You should load your images into your panels within on init, not within the paint routine. The paint routine is continually fired every time the UI refreshes, on init only happens once, and the images only need to be loaded once.

    Then you should refactor your code a little so you are using a single paint routine for all the panels - since they are all doing exactly the same thing there's no need to duplicate the code.

  • Attaching text/JSON files to the compiled binary?

    6
    0 Votes
    6 Posts
    559 Views
    diablo99D

    Thank you for your suggestions,
    I made this little "module" to access to pre-stored objects during production (compiled binary). I will leave it here in case someone has the same problem (already tested with pluginval).

    Note: Remember, the goal is to be able to access JSON files that cannot be added directly into the compiled binary, so data-writing is only available during development.

    First add this script in your Scripts/ folder and create an additional JSONStorage.data file in the same folder (you can execute JSONStorage.createDataFile() from console after compiling your project with the next script included):

    // JSONStorage.js /** * Store JSON data during development to use in production. * @namespace JSONStorage * @property {Object} data - The current object where all JSON data is stored. * @property {Boolean} ignoreWarnings=false - Don't show warning messages in production-mode (e.g. trying to write data-file during production). * @property {Boolean} autoWrite=true - Write data-file automatically at every change. * @example * JSONStorage.set( 'myJson', { myProp : 1 } ) ; // <- Only in dev-mode, in production it will be skipped with a warning-message. * var json = JSONStorage.get( 'myJson' ) ; * var data = json.data ; // <- Already saved data (cached) in 'Scripts/JSONStorage.data' file. * Console.print( trace( data ) ) ; // <- Expected : "{ myProp : 1 }" */ namespace JSONStorage { /** Current cached data (Stored-Objects) */ reg data = { } ; /** If enabled, the warning messages in prod-mode will not showing */ reg ignoreWarnings = false ; /** If enabled, the data-file will be written automatically after every change. */ reg autoWrite = true ; /** Check current enviroment (DEV/PROD) */ const var DEV = Engine.isHISE( ) ? true : false ; /** * Get the data-file reference from "Scripts/" folder (Only works during development). * @memberof JSONStorage * @function getDataFile * @returns {FileObject} */ inline function getDataFile( ) { if( !DEV && ignoreWarnings != true ) { Console.print( 'WARNING: (JSONStorage) You are trying to access to the JSONStorage.data file during production mode.' ) ; } // prod-mode notice [^] ; local scriptsDir = FileSystem.fromReferenceString( '{PROJECT_FOLDER}../Scripts/', FileSystem.AudioFiles ) ; return scriptsDir.getChildFile( 'JSONStorage.data' ) ; } ; /** * (DEV) Call this function to a quick data-file creation (remove `"include( 'JSONStorage.data' )" first to avoid errors`). * @memberof JSONStorage * @function createDataFile * @returns {Void} */ inline function createDataFile( ) { if( !DEV && ignoreWarnings != true ) { Console.print( 'WARNING: JSONStorage.createDataFile( ) is only available at development (skipping).' ) ; return void 0 ; } // create if doesn't exists [v] local scriptFile = getDataFile( ) ; if( !scriptFile.isFile( ) ) { scriptFile.writeString( "/** JSON STORAGE */" ) ; } // finish [v] ; return void 0 ; } ; /** * Store the given JSON-Object into the current data and print a message in the console (used by the `"JSONStorage.data"` file). * @param {Object} json - The object to store in the data-file. * @memberof JSONStorage * @function loadData * @returns {Void} */ inline function loadData( json ) { if( typeof json != 'object' ) { return Console.print( 'ERROR:JSONStorage.loadData( ) requires 1 parameter: json<Object>.' ) ; } // store in data prop [v] ; data = json ; Console.print( 'JSON-STORAGE-DATA LOADED.' ) ; return void 0 ; } ; /** * Get a stored JSON-Object with the given *key*. * @param {String} key - The key of the stored object. * @memberof JSONStorage * @function get * @returns {Object|Null} */ inline function get( key ) { if( typeof key != 'string' ) { return Console.print( 'ERROR:JSONStorage.get( ) requires 1 parameter: key<String>' ) ; } else if( typeof data != 'object' ) { data = { } ; } // retreive [v] ; return data[ key ] ; } ; /** * (DEV) Write all current data into the `"JSONStorage.data"` file to be available during production mode (or next compilation). * @memberof JSONStorage * @function write * @returns {Void} */ inline function write( ) { if( !DEV && ignoreWarnings != true ) { Console.print( 'WARNING: JSONStorage.write( ) is only available during development (skipping).' ) ; return void 0 ; } // save [v] ; local fileContent = 'JSONStorage.loadData( ' + JSON.stringify( data ) + ' ) ;' ; local scriptFile = getDataFile( ) ; if( !scriptFile.isFile( ) ) { createDataFile( ) ; } scriptFile.writeString( fileContent ) ; Console.print( 'JSON-STORAGE-DATA UPDATED.' ) ; return void 0 ; } ; /** * (DEV) Store a JSON-Object with the given *key*. * @param {String} key - The object key to store in the data-file. * @param {Object} value - The actual object to store in the data. * @memberof JSONStorage * @function set * @returns {Void} */ inline function set( key, value ) { if( typeof key != 'string' || typeof value != 'object' ) { return Console.print( 'ERROR:JSONStorage.set( ) requires 2 parameters: key<String> & value<Object>' ) ; } // continue [v] ; if( typeof data != 'object' ) { data = { } ; } data[ key ] = value ; if( autoWrite == true ) { return write( ) ; } else { return void 0 ; } } ; /** * (DEV) Remove an specific object object from the stored data. * @memberof JSONStorage * @function remove * @returns {Void} */ inline function remove( key ) { if( typeof key != 'string' ) { return Console.print( 'ERROR:JSONStorage.remove( ) requires 1 parameter: key<String>.' ) ; } else if( !isDefined( data[ key ] ) ) { return void 0 ; } // remove [v] ; data[ key ] = null ; local obj = { } ; local z ; for( z in data ) { if( !isDefined( data[ z ] ) ) { continue ; } obj[ z ] = data[ z ] ; } // finish [v] ; data = obj ; if( autoWrite == true ) { return write( ) ; } else { return void 0 ; } } ; /** * (DEV) Remove all objects from cached-data. If `autoWrite` is enabled, it will clear the `"JSONStorage.data"` file too. * @memberof JSONStorage * @function clear * @returns {Void} */ inline function clear( ) { data = { } ; if( autoWrite == true ) { return write( ) ; } else { return void 0 ; } } ; /** * (DEV) Load a given file and stores it in the cached data. * @param {FileObject|String} fileOrPath - The file or file-path to use in object loading. * @param {String|Null} key=null - The *key* to use locate the loaded object into the *data*. If not set, the filename will be used as *key*. * @param {Null|Boolean} forceUpdate=false - If set `false`, the object will be not loaded if already exists in the current cached-data. * @memberof JSONStorage * @function loadFile * @returns {String} - The key used to access to the data (the filename without extension). * @example * JSONStorage.loadFile( '{PROJECT_FOLDER}../Objects/MyFile.json', null, true ) ; * // It will be saved as 'MyFile' ; * var json = JSONStorage.get( 'MyFile' ) ; */ inline function loadFile( fileOrPath, key, forceUpdate ) { if( !DEV && ignoreWarnings != true ) { Console.print( "(JSONStorage) You are trying to load a JSON-file during production-mode (skipping)." ) ; return void 0 ; } // skip during prod-mode [^] ; if( !isDefined( fileOrPath ) ) { return Console.print( 'ERROR:JSONStorage.loadFile( ) requires 3 parameters: fileOrPath<FileObject|String>, key<Null|String> & replace<Null|Boolean>.' ) ; ; } // get file ref [v] ; local file = typeof fileOrPath != 'string' ? fileOrPath : fileOrPath.indexOf( '{PROJECT_FOLDER}' ) == 0 ? FileSystem.fromReferenceString( fileOrPath, FileSystem.AudioFiles ) : FileSystem.fromAbsolutePath( fileOrPath ) ; if( !file.isFile( ) ) { return Console.print( 'ERROR:(JSONStorage) No JSON file found "' + file.toString( 0 ) + '"' ) ; } // check [v] ; local force = forceUpdate == true ? true : false ; local name = typeof key == 'string' ? key : file.toString( 1 ) ; if( !isDefined( data ) ) { data = { } ; } else if( typeof data[ name ] == 'object' && force == false ) { return name ; } // store it [v] ; local json = file.loadAsObject( ) ; data[ name ] = json ; if( autoWrite == true ) { write( ) ; } return name ; } ; } ;

    And now you will be able to add your JSON files during development to access them in production (compiled binary):

    include( 'JSONStorage.js' ) ; include( 'JSONStorage.data' ) ; // <- You must include the data file just after the given script. // LOADING FILES ; JSONStorage.loadFile( '{PROJECT_FOLDER}../MyObjectsFolder/MyObject.json', null, false ) ; // [^] Load 'MyObject.json' with no custom key (using the filename as key) and not update it at every compilation. var file = FileSystem.fromAbsolutePath( 'C://myObject/path.json' ) ; JSONStorage.loadFile( file, 'absoluteObject', true ) ; // [^] Loads 'path.json' from file-object with custom key ("absoluteObject") and update it at every compilation. // MANUAL ADD JSONStorage.set( 'myManualObject', { prop1 : 'value' } ) ; // All changes will be saved automatically into "JSONStorage.data" file 'cause JSONStorage.autoWrite is enabled. // GET OBJECTS ; var myObject = JSONStorage.get( 'MyObject' ) ; // The first json-file loaded in this example. var data = JSONStorage.data ; Console.print( trace( data ) ) ; // EXPECTED PRINT [v] ; // { // MyObject : ... , // absoluteObject : ... , // myManualObject : ... // } //

    Some tips:
    Try to make data-changes only if you are in dev-mode.

    var devMode = Engine.isHISE( ) ; if( devMode == true ) { // LOAD FILES [v] JSONStorage.loadFile( 'FILE_PATH', 'myJSONFile', false ) ; } var myObject = JSONStorage.get( 'myJSONFile' ) ;

    By default, to avoid errors, the module will skip changes (writing) in production mode, but it will print a WARNING message in the console. If you want to remove those message, just set the ignoreWarnings property to true in order to use all features without getting warnings (in production mode).

    JSONStorage.ignoreWarnings = true ; JSONStorage.loadFile( ... ) ;

    Hope it can be helpful to someone :)

  • Building Plugin Crashes HISE - Advice on how to debug?

    Unsolved
    1
    0 Votes
    1 Posts
    155 Views
    No one has replied
  • what's the right set up for the harmonic filter buttons

    1
    0 Votes
    1 Posts
    125 Views
    No one has replied
  • How much can Hise Handle?

    7
    0 Votes
    7 Posts
    391 Views
    D

    @aaronventure thanks

  • Scripting Tutorials

    Unsolved
    7
    0 Votes
    7 Posts
    348 Views
    LindonL

    @Lydian said in Scripting Tutorials:

    @d-healey just for fun yeah. I'll check out Dan and Lindon. Thank you for the reply

    Is there something missing from the one that already exists or do you just want to do it for fun?

    yeah multiband is not hard - theres even a template or two in ScriptNode to get you started...

  • Problem downloading tiny files

    Solved
    6
    0 Votes
    6 Posts
    519 Views
    ustkU

    @d-healey Well that doesn't mean I understand all of this, especially why the problem occurred with tiny files and not with "normal" sized ones... Anyway small files are now downloading light speed with no errors

  • Samples Missing In Exported VST

    3
    0 Votes
    3 Posts
    248 Views
    W

    @d-healey Ok thank you I will go ahead and try that. I wasn't aware there was a LinkWindows File.

31

Online

1.6k

Users

11.2k

Topics

97.3k

Posts