GithubHelp home page GithubHelp logo

christophhart / hise Goto Github PK

View Code? Open in Web Editor NEW
956.0 58.0 112.0 189.6 MB

The open source framework for sample based instruments

Home Page: http://hise.audio

License: Other

C++ 85.19% JavaScript 0.04% C 12.76% Objective-C++ 1.20% CSS 0.21% Objective-C 0.04% R 0.01% Java 0.15% Makefile 0.15% Batchfile 0.04% HTML 0.02% Shell 0.01% Inno Setup 0.01% Rich Text Format 0.01% CMake 0.15% Assembly 0.02% Rez 0.01%
sampler-engine juce audio-plugin-export cpp vsts

hise's Introduction

HISE

Build Status macOS / Windows (develop branch)

CI build macOS

The open source framework for sample based instruments.

HISE is a cross-platform open source audio application for building virtual instruments. It emphasizes on sampling, but includes some basic synthesis features for making hybrid instruments as well as audio effects. You can export the instruments as VST / AU / AAX plugins or as standalone application for Windows / macOS or iOS.

More information:

HISE website

System requirements

Supported OS:

  • Windows 7+
  • OSX 10.7+
  • iOS 8.0+
  • Linux (tested on Ubuntu 16.04 LTS)

HISE is tested on Windows and OSX with the following hosts:

  • Cubase
  • Ableton Live
  • Logic
  • Reaper
  • Protools
  • REASON 10
  • FL Studio
  • Presonus Studio One

It supports x86 and x64 on Windows, altough the 64bit version is highly recommended (it uses memory mapping for accessing samples and because of the limitations of the 32bit memory address space it needs a slower fallback solution).

How to compile HISE

Windows

  1. Clone this repository. It also includes the (slightly modified) JUCE source code, so it might take a while.

  2. Extract the contents of tools/SDK/sdk.zip to tools/SDK. Your tools folder should now contain folders named ASIOSDK2.3 and VST3 SDK.

  3. Open the Projucer (there are compiled versions for every supported OS in the tools/projucer subdirectory) and load the HISE project (either projects/standalone/HISE Standalone.jucer or project/plugin/HISE.jucer)

  4. Click on "Save Project and open in IDE" to load the project in Visual Studio 2022.

  5. Hit compile and wait...

OSX

  1. Clone this repository. It also includes the (slightly modified) JUCE source code, so it might take a while.

  2. Extract the contents of tools/SDK/sdk.zip to tools/SDK. Your tools folder should now contain folders named ASIOSDK2.3 and VST3 SDK.

  3. Install xcpretty, a formatter for xcode. You can install it from the terminal using the command sudo gem install xcpretty.

  4. Open the Projucer (there are compiled versions for every supported OS in the tools/projucer subdirectory) and load the HISE project (either projects/standalone/HISE Standalone.jucer or project/plugin/HISE.jucer).

If you hit a permission issue when launching Projucer (or an error stating that Projucer is damaged) you need to open Security & Privacy and whitelist Projucer.

  1. Click on "Save Project and open in IDE" to load the project in XCode.

  2. Hit compile and wait...

Linux

  1. Install the dependencies:
sudo apt-get -y install build-essential make llvm clang libfreetype6-dev libx11-dev libxinerama-dev libxrandr-dev libxcursor-dev mesa-common-dev libasound2-dev freeglut3-dev libxcomposite-dev libcurl4-gnutls-dev libwebkit2gtk-4.0 libgtk-3-dev libjack-jackd2-dev
  1. Clone this repository. It also includes the (slightly modified) JUCE source code, so it might take a while.

  2. Extract the contents of tools/SDK/sdk.zip to tools/SDK. Your tools folder should now contain folders named ASIOSDK2.3 and VST3 SDK.

  3. Open the Projucer (a precompiled Linux binary can be found at tools/projucer). Load the project projects/standalone/HISE Standalone.jucer and resave the project (this will generate the Makefile with correct Linux paths).

  4. Open the terminal and navigate to this subdirectory: projects/standalone/Builds/LinuxMakefile

  5. Type make CONFIG=Release and wait. If you need the debug version (that is slower but allows you to jump around in the source code, use make CONFIG=Debug.

License

HISE is licensed under the GPL v3, but there will be a commercial license for closed source usage. Every instrument you'll build will inheritate this license so in order to release a closed source product you'll have to obtain a HISE commercial license as well as a JUCE commercial license. Please get in touch with me for further informations.

Included frameworks

For FFT routines and some vector operations, it is recommended to build HISE against the Intel IPP library (not included).

Apart from the JUCE C++ library, there are some other 3rd party frameworks and libraries included in HISE, which are all non restrictively licenced (either BSD or MIT):

  • ICSTDP DSP library: A pretty decent DSP library with some good and fast routines. Website
  • Kiss FFT: A easy and C-only FFT library with a clean interface and acceptable performance. It is used as fallback FFT when the IPP library is not available.
  • FFTConvolver: a library for fast, partitioned real time convolution: https://github.com/HiFi-LoFi/FFTConvolver
  • MDA Plugins: a collection of audio effects recently published as open source project.
  • some other public domain code taken from various sources (http://musicdsp.org, etc.).

Support

The best place to get support for anything related to HISE is the user forum: https://forum.hise.audio/

hise's People

Contributors

christoph-hart avatar davidhealey avatar levitanus avatar lunacyaudio avatar psobot avatar romsom avatar spezifisch avatar ustk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

hise's Issues

The Preset Folder was not found

I just installed HISE on Windows x64 and everytime I click on the File menu I got this annoying message:

hise_2017-03-11_00-45-23

What is the documentation folder? What should I do to fix it?

Drag&Drop of interface elements sometimes triggers breakpoints

bug 002

The dragging&dropping of interface elements, erratically results in triggering of breakpoint in the ScriptContentComponent.cpp. After reloading, the graphic and bounding box are not aligned.

Expected result

  • no triggering / smooth behaviour

Standalone
latest dev
Win7 / VS15

Add scriptable viewport

/** Adds a new viewport */
Content.addViewPort(name, x, y);

set it as parentComponent for another UI control and it will display it in a scrollable viewport

Properties:

  • scrollbarThickness
  • autoHide - hides the scrollbars if the content is smaller than the viewport

Colours:

  • itemColour1: scrollbar colour

Add customizable layout to frontend

This will allow to define the interface for the exported instrument using the same tools as building a HISE workspace and combine ready made modules like the on screen keyboard or the audio settings dialog with scripted interfaces to get rid of the hardcoded main toolbar and the keyboard below (it will also allows multiple script interfaces in e.g. a tab container for things like "Main Interface", "Advanced Interface")

The appearance of every component is fully customizable using the JSON data.

Show .XML files in file browser

Show XML files in the browser and allow sample map drag and drop (peek the root tag name to check if it's a valid sample map file).

- script autocompletion issues

Script-Autocomplete crashes on several occasions. Havent figured out, exactly why..

  • with content marked?
  • with accidentally CAPSLOCK?

bug 6

build fails on linux

Compiling juce_audio_plugin_client_utils.cpp
In file included from ../../../../JUCE/modules/juce_audio_plugin_client/utility/juce_PluginUtilities.cpp:30:0,
                 from ../../../../JUCE/modules/juce_audio_plugin_client/juce_audio_plugin_client_utils.cpp:25,
                 from ../../JuceLibraryCode/juce_audio_plugin_client_utils.cpp:9:
../../../../JUCE/modules/juce_audio_plugin_client/utility/../utility/juce_CheckSettingMacros.h:32:3: error: #error "You need to enable at least one plugin format!"
  #error "You need to enable at least one plugin format!"
   ^
../../../../JUCE/modules/juce_audio_plugin_client/utility/../utility/juce_CheckSettingMacros.h:41:3: error: #error "You need to define the JucePlugin_IsSynth value!"
  #error "You need to define the JucePlugin_IsSynth value!"
   ^
../../../../JUCE/modules/juce_audio_plugin_client/utility/../utility/juce_CheckSettingMacros.h:45:3: error: #error "You need to define the JucePlugin_ManufacturerCode value!"
  #error "You need to define the JucePlugin_ManufacturerCode value!"
   ^
../../../../JUCE/modules/juce_audio_plugin_client/utility/../utility/juce_CheckSettingMacros.h:49:3: error: #error "You need to define the JucePlugin_PluginCode value!"
  #error "You need to define the JucePlugin_PluginCode value!"
   ^
../../../../JUCE/modules/juce_audio_plugin_client/utility/../utility/juce_CheckSettingMacros.h:53:3: error: #error "You need to define the JucePlugin_ProducesMidiOutput value!"
  #error "You need to define the JucePlugin_ProducesMidiOutput value!"
   ^
../../../../JUCE/modules/juce_audio_plugin_client/utility/../utility/juce_CheckSettingMacros.h:57:3: error: #error "You need to define the JucePlugin_WantsMidiInput value!"
  #error "You need to define the JucePlugin_WantsMidiInput value!"
   ^
In file included from ../../../../JUCE/modules/juce_audio_plugin_client/utility/juce_PluginUtilities.cpp:30:0,
                 from ../../../../JUCE/modules/juce_audio_plugin_client/juce_audio_plugin_client_utils.cpp:25,
                 from ../../JuceLibraryCode/juce_audio_plugin_client_utils.cpp:9:
../../../../JUCE/modules/juce_audio_plugin_client/utility/../utility/juce_CheckSettingMacros.h:65:3: error: #error "You need to define the JucePlugin_EditorRequiresKeyboardFocus value!"
  #error "You need to define the JucePlugin_EditorRequiresKeyboardFocus value!"
   ^
Makefile:193: recept voor doel 'build/intermediate/Debug/juce_audio_plugin_client_utils_35fbf7.o' is mislukt
make: *** [build/intermediate/Debug/juce_audio_plugin_client_utils_35fbf7.o] Fout 1

[File Browser] The Back option displays nothing. Buggy feeling

bug 012

Expected Behavior

  • Back Option should access the file System
  • Want to Back/Forth through Folder-Tree. Not through the last opened folder.

Current Behavior

  • Tried to access other files in the the File System. See nothing.
  • On Startup the most Project Folders are empty. See nothing.

Possible Solution

  • Fix back/forth through File System.

  • else: greyed out/notPossible back-arrow if we want to restrict access only to projectFolder

  • UX Extra: When a Folder is empty; display "This folder is empty"


Standalone
latest dev
Win7 / VS15

segfault on standalone for Linux

Latest git pull, Fedora 21 x86_64, GCC 4.9.2.

Program received signal SIGSEGV, Segmentation fault.
0x000000000040d1ef in juce::CharPointer_UTF8::isEmpty (
this=0x18e6b28 juce::juce_xmltextContentAttributeName)
at ../../JuceLibraryCode/modules/hi_backend/../../../../../hi_backend/../hi_modules/../hi_scripting/../hi_core/../JUCE/modules/juce_core/text/juce_CharPointer_UTF8.h:80
80 inline bool isEmpty() const noexcept { return *data == 0; }

Simple backtrace:

(gdb) bt
#0 0x000000000040d1ef in juce::CharPointer_UTF8::isEmpty (

this=0x18e6b28 <juce::juce_xmltextContentAttributeName>)
at ../../JuceLibraryCode/modules/hi_backend/../../../../../hi_backend/../hi_modules/../hi_scripting/../hi_core/../JUCE/modules/juce_core/text/juce_CharPointer_UTF8.h:80

#1 0x000000000045afe0 in juce::String::isEmpty (

this=0x18e6b28 <juce::juce_xmltextContentAttributeName>)
at ../../../../hi_backend/../hi_modules/../hi_scripting/../hi_core/../JUCE/modules/juce_core/text/juce_String.h:311

#2 0x0000000000920a5f in juce::StringPool::getPooledString (

this=0x18e6b80 <juce::StringPool::getGlobalPool()::pool>, newString=...)
at ../../../../JUCE/modules/juce_core/text/juce_StringPool.cpp:136

#3 0x00000000009162ab in juce::Identifier::Identifier (this=0x7fffffffca50,

nm=...) at ../../../../JUCE/modules/juce_core/text/juce_Identifier.cpp:51

#4 0x000000000092e110 in juce::XmlElement::createTextElement (text=...)

at ../../../../JUCE/modules/juce_core/xml/juce_XmlElement.cpp:888

#5 0x000000000092a07a in juce::XmlDocument::readChildElements (

this=0x7fffffffd5e0, parent=...)
at ../../../../JUCE/modules/juce_core/xml/juce_XmlDocument.cpp:642

#6 0x000000000092938e in juce::XmlDocument::readNextElement (

this=0x7fffffffd5e0, alsoParseSubElements=true)
at ../../../../JUCE/modules/juce_core/xml/juce_XmlDocument.cpp:435

#7 0x0000000000929b74 in juce::XmlDocument::readChildElements (

this=0x7fffffffd5e0, parent=...)
at ../../../../JUCE/modules/juce_core/xml/juce_XmlDocument.cpp:549

#8 0x000000000092938e in juce::XmlDocument::readNextElement (

this=0x7fffffffd5e0, alsoParseSubElements=true)
at ../../../../JUCE/modules/juce_core/xml/juce_XmlDocument.cpp:435

#9 0x0000000000928649 in juce::XmlDocument::parseDocumentElement (

this=0x7fffffffd5e0, textToParse=..., onlyReadOuterDocumentElement=false)
at ../../../../JUCE/modules/juce_core/xml/juce_XmlDocument.cpp:215

#10 0x00000000009281be in juce::XmlDocument::getDocumentElement (

this=0x7fffffffd5e0, onlyReadOuterDocumentElement=false)
at ../../../../JUCE/modules/juce_core/xml/juce_XmlDocument.cpp:142

#11 0x0000000000927e0f in juce::XmlDocument::parse (file=...)

at ../../../../JUCE/modules/juce_core/xml/juce_XmlDocument.cpp:56

#12 0x0000000000a0d7a8 in juce::FTTypefaceList::getDefaultFontDirectories ()

at ../../../../JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:34

#13 0x0000000000a18320 in juce::FTTypefaceList::FTTypefaceList (this=0x18ea0c0)

at ../../../../JUCE/modules/juce_graphics/native/juce_freetype_Fonts.cpp:88

#14 0x0000000000a18dd2 in juce::FTTypefaceList::getInstance ()

at ../../../../JUCE/modules/juce_graphics/native/juce_freetype_Fonts.cpp:227

#15 0x0000000000a19149 in juce::FreeTypeTypeface::FreeTypeTypeface (

this=0x18ea280, data=0xe6d2c0 <HiBinaryData::temp_binary_data_15126>, 
dataSize=48812)
at ../../../../JUCE/modules/juce_graphics/native/juce_freetype_Fonts.cpp:303

#16 0x0000000000a0dc93 in juce::Typeface::createSystemTypefaceFor (

data=0xe6d2c0 <HiBinaryData::temp_binary_data_15126>, dataSize=48812)
at ../../../../JUCE/modules/juce_graphics/native/juce_linux_Fonts.cpp:74

#17 0x000000000040d070 in __static_initialization_and_destruction_0 (

__initialize_p=1, __priority=65535)
at ../../JuceLibraryCode/modules/hi_backend/../../../../../hi_backend/../hi_modules/../hi_scripting/../hi_core/Macros.h:71

#18 0x000000000040d147 in _GLOBAL__sub_I_DspUnitTests.cpp(void) ()

at ../../../../hi_scripting/scripting/api/DspUnitTests.cpp:142

#19 0x0000000000bc1ded in __libc_csu_init ()
#20 0x000000327541ff6f in __libc_start_main () from /lib64/libc.so.6
#21 0x000000000040ce89 in _start ()

[File Naming Convention] Rationalize naming schemes

The naming convention of the Hise Project work-flow is kinda unintuitive.

Current Behavior

  • Open Project then open .xml file (in folder XMLPresetBackups..)
  • File/.hip in Presets Folder
  • User Presets.preset

Expected Behaviour

  • Intuitive naming schemes.
  • Project > File/.hip | Presets

LayoutMode Delete Button is a bit overambitious

bug 001
Critical because the bug manipulates the project structure in %APPDATA%. Depending on the autosave settings, HISE doesnt start anymore at all.

Expected result / fix

  • remove kill switch
  • make it accessible only in custom workspace

Standalone
latest dev
Win7 / VS15

[Interface Popup Window] Crashes on Edit

bug 008

Expected Behavior

  • Edit / Add element

Current Behavior

  • crashes

Possible Solution

  • repair
  • in the light, that the most editing of interface components will now take place in the scripting workspace, the edit mode loses its sense in the popout. just implement as viewer?

Standalone
latest dev
Win7 / VS15

- [Sampler] SampleEditor GUI Annotations

Nice fixes!
I made some annotations/proposals for the GUI:

sampler_gui_annotations

  1. Masterchain expander doesnt make sense.
  2. Linear/Loopstart Toggle breaking point, (btw: what is it good for? ๐Ÿค” )
    bug 7
  3. Autoselect Button needs a better switch symbol. you wouldnt know what it means. Also: On/Off behaviour.
  4. is it possible to implement dragging by default (always on? (on mouse hold) We could get rid of some buttons..
  5. X-Fade Corners (like in DAWs) do they make sense? (loop x-fade broken!)
    • Top area x-fade
    • bottom crop

Greetz,d

Z-order has no effect on graphics

bug 003

Expected Behavior

  • works

Current Behavior

  • doesnt work

Possible Solution

  • fix
  • strip it out / only code flow determines z-order

Standalone
latest dev
Win7 / VS15

Unable to build on linux

hello there !

After installing the dependencies and cloning the repo, I was unable to run properly Projucer.

(gdb) run
Starting program: /home/m4l3z/HISE/tools/projucer/Projucer 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
JUCE v4.3.0

Program received signal SIGILL, Illegal instruction.
0x00000000006ebcdc in juce::AffineTransform::AffineTransform (
    this=0xdbed90 <juce::AffineTransform::identity>)
    at ../../../../modules/juce_graphics/geometry/juce_AffineTransform.cpp:27
27	../../../../modules/juce_graphics/geometry/juce_AffineTransform.cpp: No such file or directory


(gdb) backtrace
#0  0x00000000006ebcdc in juce::AffineTransform::AffineTransform (
    this=0xdbed90 <juce::AffineTransform::identity>)
    at ../../../../modules/juce_graphics/geometry/juce_AffineTransform.cpp:27
#1  0x00000000007669ae in __static_initialization_and_destruction_0 (
    __initialize_p=1, __priority=65535)
    at ../../../../modules/juce_graphics/geometry/juce_AffineTransform.cpp:83
#2  0x0000000000766a3c in _GLOBAL__sub_I__ZN4juce6ColourC2Ev ()
    at ../../../../modules/juce_graphics/juce_graphics.cpp:164
#3  0x000000000092189d in __libc_csu_init ()
#4  0x00007ffff61017bf in __libc_start_main (
    main=0x4391f7 <main(int, char**)>, argc=1, argv=0x7fffffffddd8, 
    init=0x921850 <__libc_csu_init>, fini=<optimized out>, 
    rtld_fini=<optimized out>, stack_end=0x7fffffffddc8)
    at ../csu/libc-start.c:247
#5  0x0000000000408709 in _start ()

[Sampler Workspace] Menu overflow on resize

bug 005

Expected Behavior

  • overflow minimizes menu

Current Behavior

  • the menu and headings overlap
  • search background out of sync with boundaries

Possible Solution

  • fixed minimal window size.
  • overflow folding

Standalone
latest dev
Win7 / VS15

ScriptingAPI: Add open in popout

/** Opens the given component in a popout and 
*   centers it around the given attachedComponent */
Content.openInPopout(id, attachedComponentId)

It will internally duplicate the component and ignore it's visibility property so you can hide it by default and just show it in a popout.

[Convenience] Naming placeholder greyed out

bug 016

Current Behavior

  • Current Placeholder is often accidentally accepted while an Element already exsists, throws exception..

Expected Behaviour

  • Greyed out Placeholder to be accepted with TAB.

- Save as..

It would be great to have the possibility to save as.. a current altered patch into a new project.

[Sampler] Text-Input not centered, sits too low

bug 006

Expected Behavior

  • Text centered for more readability

Current Behavior

  • Text sits too low on input, clashes with the border

Possible Solution

  • center the text input
  • slim the green border ca. 1-2px
  • lighter background for more contrast

Standalone
latest dev
Win7 / VS15

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.