Making standalone app with offline/batch features?
-
Can I make a standalone application with offline processing or batch file processing with hise/Juce?
Here´s what I want to make:
- read a list of files (and store a project as a preset, for instance)
- press a button to complete an offline processing of say... a compressor or a script
- make new files or destructively overwrite the input files
- basically what iZotope RX has or any equivalent
Is it possible?
-
You can do this with JUCE.
HISE isn't really suitable for this but with enough additional C++ anything's possible.
-
@d-healey said in Making standalone app with offline/batch features?:
You can do this with JUCE.
HISE isn't really suitable for this but with enough additional C++ anything's possible.
Thanks. Yes, I guess it´s mostly for hooking up a signal to either plugin-processing or the same for midi-triggered stuff. But isn´t there a module that handles offline processing of some sort in HISE in one of the modules?
The getting files into the app is another thing that could perhaps not be done with HISE as is. But having the references to the files perhaps a module could get the job done?
-
@andioak I really don't think this is a job for HISE. HISE can play back audio and it can alter an incoming audio signal but it doesn't write audio files.
-
@d-healey it'll be a question of c++ and JUCE then. Bummer. Thanks for replying.
-
I was just looking in the API today and noticed there is a writeAudioFile function, I don't know if it's suitable for what you want but it might be a good starting point.
-
@andioak I think Hise could do it without the need for C++. SNEX might handle that, but if you need offline processing, it means you need to use your own effect algorithms to apply on audio files you have loaded, and use writeAudioFile and related functions @d-healey mentioned... Since the node system is part of the audio streaming, I don't think it is possible to batch or treat offline using a scriptnode graph. But I reckon SNEX can use the nodes in code so there might be a possibility to use them offline too. These are just suppositions though, I have no idea where to begin, and what I say might be non-sense...
-
@d-healey said in Making standalone app with offline/batch features?:
I was just looking in the API today and noticed there is a writeAudioFile function, I don't know if it's suitable for what you want but it might be a good starting point.
Thanks, i'll have a look at it.
-
@ustk said in Making standalone app with offline/batch features?:
... I don't think it is possible to batch or treat offline using a scriptnode graph. But I reckon SNEX can use the nodes in code so there might be a possibility to use them offline too.
Thanks, yes I dug a bit into the api on docs.hise.audio and found a few things perhaps able to take care of some of it.
Standard Hise API:
File.createDirectory
,File.getChildFile
,File.getParentDirectory
,File.show
-- link -- check, check, check & check.AudioFile.loadFile
-- linkEngine.loadAudioFileIntoBufferArray
-- link -- "Loads a file and returns its content as array of Buffers." -- perhaps able to do the data store.
In the Scriptnode List of Nodes I found
control.file_analyser
, (link ), which surely must do it's job offline. Perhaps there is a way to cue samples (blocks of samples) to be run through any module or chain? Then there's thecore.file_player
, (link ), which also handles audio files possibly offline. Both of these though are farily simple modules with no extras in the docs. The docs are void of any descriptions of the Scriptnode list of nodes, at least on the committed docs.Perhaps it is something one has to code yourself in SNEX as you say, but then perhaps the real idea is to have a processor handle all things hise in offline mode. Not even beginner in C or C++ so would not know where to start. The method could be to pipeline all audio blocks in an array of files through the code. Haha. Just stuff it in there, nice and thick.