VST2 frequency modulation synthesizer written in Rust

Overview

OctaSine

VST2 frequency modulation synthesizer written in Rust.

Official website with downloads
OctaSine.com

Audio examples
SoundCloud

Screenshots

Light mode

Screenshot of OctaSine in light mode

Dark mode

Screenshot of OctaSine in dark mode

About

  • Four FM operators with parameters for volume, panning, modulation index, feedback, frequency modifiers (ratio, free and fine), envelope values (attack, decay, release) and toggling of white noise mode.
  • Flexible routing allows setting the operator modulation target (with some limitations) as well as the percentage of signal that is simply added to the final output, enabling additive synthesis.
  • Four LFOs with multiple waveforms, oneshot and loop modes and optional DAW BPM sync. They can target most operator parameters and most parameters of lower-index LFOs.
  • Each operator is connected to an attack-decay-sustain-release volume envelope with logarithmic slopes.
  • Per-operator white noise mode makes it easy to create percussive sounds such as hi-hats and cymbals.
  • Runs on macOS, Windows 10 and Linux in VST2-compatible DAWs. Synthesis is SIMD-accelerated where possible.
  • Master volume and master frequency parameters
  • 128 voices (using them all simultaneously might consume quite a bit of CPU time though)
  • Fully automatable

Installation

Please refer to OctaSine.com.

Installation from source code

macOS

If you already have any of the software mentioned below, that step can be skipped.

  1. Install the Rust compiler. Choose the nightly toolchain when prompted. Requires the XCode build tools from Apple, you will probably be prompted to install those.

  2. Install homebrew.

  3. Install git and cmake with homebrew:

brew install git cmake
  1. Clone this repository to a folder on your computer:
mkdir -p "$HOME/Downloads"
cd "$HOME/Downloads"
git clone https://github.com/greatest-ape/OctaSine.git
cd OctaSine
  1. Build and install:
./scripts/macos/build-simd-and-install.sh

Windows

If you already have any of the software mentioned below, that step can be skipped.

  1. Install Microsoft C++ Build Tools. Make sure that the Windows 10 SDK and the English language pack components are included during installation.
  2. Install the Rust compiler. When prompted, choose the nightly toolchain and to modify the path variable.
  3. Install cmake. When prompted, choose the option to add cmake to the system executable path.
  4. Install git.
  5. Clone this repository to a folder on your computer.
  6. Build OctaSine:
cargo +nightly build --release --features "simd" -p octasine_vst2_plugin
  1. Copy target\release\octasine.dll to your VST plugin folder.

Linux

If you already have any of the software mentioned below, that step can be skipped.

  1. Install the Rust compiler. Choose the nightly toolchain when prompted.
  2. Install dependencies, e.g.,
sudo apt-get install cmake git build-essential libx11-dev libxcursor-dev libxcb-dri2-0-dev libxcb-icccm4-dev libx11-xcb-dev 

You might need to install llvm/clang dependencies too, e.g.,

sudo apt-get install llvm clang

On Debian 10, you might need to install some more dependencies:

sudo apt-get install pkg-config libfreetype6-dev libexpat1-dev
  1. Clone this repository to a folder on your computer, e.g.,
mkdir -p "$HOME/Downloads"
cd "$HOME/Downloads"
git clone https://github.com/greatest-ape/OctaSine.git
cd OctaSine
  1. Build the OctaSine plugin:
cargo +nightly build --release --features "simd" -p octasine_vst2_plugin

If build fails, please try building without sleef SIMD acceleration:

cargo +nightly build --release -p octasine_vst2_plugin
  1. Copy target/release/liboctasine.so to your VST plugin folder

  2. You might need to install Vulkan graphics drivers too. More info here.

Architecture

See ARCHITECTURE.md.

Copyright and license

Copyright (C) 2019-2021 Joakim Frostegård

OctaSine is licensed under the GNU Affero General Public License, Version 3, as published by the Free Software Foundation. See LICENSE for details.

Contents of the contrib directory are licensed under other terms. Please refer to the contained directories and/or files for details.

Trivia

  • The name OctaSine comes from the four stereo sine-wave operators
Comments
  • UI labels doesn't display

    UI labels doesn't display

    In OctaSine 0.5.1 the labels of the user interface doesn't appear. The other elements are fine, it's just the texts that are missing. Windows 10 inside Reaper 6 DAW. The problem is immediate from the loading of the VST. OctaSine.log

    wgpu bug windows 
    opened by bird0912 14
  • Improve FL Studio automation support

    Improve FL Studio automation support

    I just installed the plugin and I tried to automate the controls without any luck. Is there a way to support it?

    If that's the case, I can help testing.

    enhancement 
    opened by jonorozcoc 13
  • debian stable SIMD build fails + GUI crashes with ”Next frame: Outdated”

    debian stable SIMD build fails + GUI crashes with ”Next frame: Outdated”

    Installed the nightly cargo toolchain. build went fine until:

      [ 81%] Built target sleefavx
      make[2]: Leaving directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      /usr/bin/make -f src/libm/CMakeFiles/sleefgnuabiavx512fsp.dir/build.make src/libm/CMakeFiles/sleefgnuabiavx512fsp.dir/build
      make[2]: Entering directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      make[2]: Nothing to be done for 'src/libm/CMakeFiles/sleefgnuabiavx512fsp.dir/build'.
      make[2]: Leaving directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      make[2]: Leaving directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      [ 84%] Built target sleefdetfma4
      /usr/bin/make -f src/libm/CMakeFiles/sleefgnuabiavx512fdp.dir/build.make src/libm/CMakeFiles/sleefgnuabiavx512fdp.dir/build
      make[2]: Entering directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      make[2]: Nothing to be done for 'src/libm/CMakeFiles/sleefgnuabiavx512fdp.dir/build'.
      make[2]: Leaving directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      make[2]: Leaving directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      /usr/bin/make -f src/libm/CMakeFiles/sleefavx512f.dir/build.make src/libm/CMakeFiles/sleefavx512f.dir/build
      make[2]: Leaving directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      make[2]: Leaving directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      make[2]: Leaving directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      /usr/bin/make -f src/libm/CMakeFiles/dispsse_obj.dir/build.make src/libm/CMakeFiles/dispsse_obj.dir/build
      make[2]: Leaving directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      /usr/bin/make -f src/libm/CMakeFiles/dispavx_obj.dir/build.make src/libm/CMakeFiles/dispavx_obj.dir/build
      /usr/bin/make -f src/libm/CMakeFiles/sleefscalar.dir/build.make src/libm/CMakeFiles/sleefscalar.dir/build
      /usr/bin/make -f src/libm/CMakeFiles/dispscalar_obj.dir/build.make src/libm/CMakeFiles/dispscalar_obj.dir/build
      make[2]: Entering directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      make[2]: Nothing to be done for 'src/libm/CMakeFiles/sleefavx512f.dir/build'.
      make[2]: Leaving directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      make[2]: Entering directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      make[2]: Nothing to be done for 'src/libm/CMakeFiles/dispsse_obj.dir/build'.
      make[2]: Leaving directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      make[2]: Entering directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      make[2]: Nothing to be done for 'src/libm/CMakeFiles/dispavx_obj.dir/build'.
      make[2]: Leaving directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      make[2]: Entering directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      make[2]: Nothing to be done for 'src/libm/CMakeFiles/sleefscalar.dir/build'.
      make[2]: Leaving directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      make[2]: Entering directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      make[2]: Nothing to be done for 'src/libm/CMakeFiles/dispscalar_obj.dir/build'.
      make[2]: Leaving directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      [ 85%] Built target sleefgnuabiavx512fsp
      [ 87%] Built target dispsse_obj
      [ 88%] Built target sleefgnuabiavx512fdp
      /usr/bin/make -f src/libm/CMakeFiles/sleefgnuabi.dir/build.make src/libm/CMakeFiles/sleefgnuabi.dir/depend
      make[2]: Entering directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      cd /home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/dreamer/.cargo/git/checkouts/sleef-sys-19b817f705a3e80d/f0a65b8/sleef /home/dreamer/.cargo/git/checkouts/sleef-sys-19b817f705a3e80d/f0a65b8/sleef/src/libm /home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build /home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build/src/libm /home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build/src/libm/CMakeFiles/sleefgnuabi.dir/DependInfo.cmake --color=
      [ 91%] Built target sleefavx512f
      [ 92%] Built target dispavx_obj
      [ 95%] Built target dispscalar_obj
      [ 96%] Built target sleefscalar
      /usr/bin/make -f src/libm/CMakeFiles/sleef.dir/build.make src/libm/CMakeFiles/sleef.dir/depend
      make[2]: Entering directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      cd /home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/dreamer/.cargo/git/checkouts/sleef-sys-19b817f705a3e80d/f0a65b8/sleef /home/dreamer/.cargo/git/checkouts/sleef-sys-19b817f705a3e80d/f0a65b8/sleef/src/libm /home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build /home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build/src/libm /home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build/src/libm/CMakeFiles/sleef.dir/DependInfo.cmake --color=
      make[2]: Leaving directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      /usr/bin/make -f src/libm/CMakeFiles/sleefgnuabi.dir/build.make src/libm/CMakeFiles/sleefgnuabi.dir/build
      make[2]: Entering directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      make[2]: Nothing to be done for 'src/libm/CMakeFiles/sleefgnuabi.dir/build'.
      make[2]: Leaving directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      make[2]: Leaving directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      /usr/bin/make -f src/libm/CMakeFiles/sleef.dir/build.make src/libm/CMakeFiles/sleef.dir/build
      make[2]: Entering directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      make[2]: Nothing to be done for 'src/libm/CMakeFiles/sleef.dir/build'.
      make[2]: Leaving directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      [ 98%] Built target sleefgnuabi
      [100%] Built target sleef
      make[1]: Leaving directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      /usr/bin/cmake -E cmake_progress_start /home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build/CMakeFiles 0
      /usr/bin/make -f CMakeFiles/Makefile2 preinstall
      make[1]: Entering directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      make[1]: Nothing to be done for 'preinstall'.
      make[1]: Leaving directory '/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/build'
      Install the project...
      /usr/bin/cmake -P cmake_install.cmake
      -- Install configuration: "RelWithDebInfo"
      -- Up-to-date: /home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/lib/libsleef.a
      -- Up-to-date: /home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/include/sleef.h
      -- Up-to-date: /home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/lib/pkgconfig/sleef.pc
      -- Up-to-date: /home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/lib/libsleefgnuabi.a
      cargo:root=/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out
      cargo:rustc-link-lib=static=sleef
      cargo:rustc-link-search=native=/home/dreamer/Sources/_audio/_plugins/OctaSine/target/release/build/sleef-sys-59a35f00c99994cf/out/lib
    
      --- stderr
         Entering             /home/dreamer/.cargo/git/checkouts/sleef-sys-19b817f705a3e80d/f0a65b8/sleef/src
         Called from: [1]	/home/dreamer/.cargo/git/checkouts/sleef-sys-19b817f705a3e80d/f0a65b8/sleef/CMakeLists.txt
         Entering             /home/dreamer/.cargo/git/checkouts/sleef-sys-19b817f705a3e80d/f0a65b8/sleef/src/libm
         Called from: [1]	/home/dreamer/.cargo/git/checkouts/sleef-sys-19b817f705a3e80d/f0a65b8/sleef/src/CMakeLists.txt
         Returning to         /home/dreamer/.cargo/git/checkouts/sleef-sys-19b817f705a3e80d/f0a65b8/sleef/src
         Called from: [1]	/home/dreamer/.cargo/git/checkouts/sleef-sys-19b817f705a3e80d/f0a65b8/sleef/src/CMakeLists.txt
         Entering             /home/dreamer/.cargo/git/checkouts/sleef-sys-19b817f705a3e80d/f0a65b8/sleef/src/common
         Called from: [1]	/home/dreamer/.cargo/git/checkouts/sleef-sys-19b817f705a3e80d/f0a65b8/sleef/src/CMakeLists.txt
         Returning to         /home/dreamer/.cargo/git/checkouts/sleef-sys-19b817f705a3e80d/f0a65b8/sleef/src
         Called from: [1]	/home/dreamer/.cargo/git/checkouts/sleef-sys-19b817f705a3e80d/f0a65b8/sleef/src/CMakeLists.txt
         Returning to         /home/dreamer/.cargo/git/checkouts/sleef-sys-19b817f705a3e80d/f0a65b8/sleef
         Called from: [1]	/home/dreamer/.cargo/git/checkouts/sleef-sys-19b817f705a3e80d/f0a65b8/sleef/CMakeLists.txt
         Target system: Linux-5.10.0-0.bpo.5-amd64
         Called from: [1]	/home/dreamer/.cargo/git/checkouts/sleef-sys-19b817f705a3e80d/f0a65b8/sleef/CMakeLists.txt
         Target processor: x86_64
         Called from: [1]	/home/dreamer/.cargo/git/checkouts/sleef-sys-19b817f705a3e80d/f0a65b8/sleef/CMakeLists.txt
         Host system: Linux-5.10.0-0.bpo.5-amd64
         Called from: [1]	/home/dreamer/.cargo/git/checkouts/sleef-sys-19b817f705a3e80d/f0a65b8/sleef/CMakeLists.txt
         Host processor: x86_64
         Called from: [1]	/home/dreamer/.cargo/git/checkouts/sleef-sys-19b817f705a3e80d/f0a65b8/sleef/CMakeLists.txt
         Detected C compiler: GNU @ /usr/bin/cc
         Called from: [1]	/home/dreamer/.cargo/git/checkouts/sleef-sys-19b817f705a3e80d/f0a65b8/sleef/CMakeLists.txt
         CMake: 3.16.3
         Called from: [1]	/home/dreamer/.cargo/git/checkouts/sleef-sys-19b817f705a3e80d/f0a65b8/sleef/CMakeLists.txt
         Make program: /usr/bin/make
         Called from: [1]	/home/dreamer/.cargo/git/checkouts/sleef-sys-19b817f705a3e80d/f0a65b8/sleef/CMakeLists.txt
    
         Called from: [1]	/home/dreamer/.cargo/git/checkouts/sleef-sys-19b817f705a3e80d/f0a65b8/sleef/CMakeLists.txt
      *** Note: Parallel build is only supported with Ninja ***
         Called from: [1]	/home/dreamer/.cargo/git/checkouts/sleef-sys-19b817f705a3e80d/f0a65b8/sleef/CMakeLists.txt
    
         Called from: [1]	/home/dreamer/.cargo/git/checkouts/sleef-sys-19b817f705a3e80d/f0a65b8/sleef/CMakeLists.txt
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:425:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:435:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:444:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:453:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:463:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:472:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:481:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:491:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:500:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:509:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:519:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:528:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:790:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:800:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:809:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:818:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:828:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:837:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:846:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size
      fatal error: too many errors emitted, stopping now [-ferror-limit=]
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:425:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size, err: true
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:435:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size, err: true
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:444:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size, err: true
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:453:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size, err: true
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:463:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size, err: true
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:472:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size, err: true
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:481:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size, err: true
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:491:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size, err: true
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:500:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size, err: true
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:509:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size, err: true
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:519:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size, err: true
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:528:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size, err: true
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:790:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size, err: true
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:800:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size, err: true
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:809:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size, err: true
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:818:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size, err: true
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:828:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size, err: true
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:837:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size, err: true
      /usr/lib/llvm-7/lib/clang/7.0.1/include/avx512bwintrin.h:846:10: error: invalid conversion between vector type '__m512i' (vector of 8 'long long' values) and integer type 'int' of different size, err: true
      fatal error: too many errors emitted, stopping now [-ferror-limit=], err: true
      thread 'main' panicked at 'Unable to generate bindings: ()', /home/dreamer/.cargo/git/checkouts/sleef-sys-19b817f705a3e80d/f0a65b8/build.rs:142:10
      stack backtrace:
         0:     0x560b373ac170 - std::backtrace_rs::backtrace::libunwind::trace::hfa838fc631229987
                                     at /rustc/24bdc6d73a75dce9a7013ebc7c037013ff4ea099/library/std/src/../../backtrace/src/backtrace/libunwind.rs:90:5
         1:     0x560b373ac170 - std::backtrace_rs::backtrace::trace_unsynchronized::h93a23e36ec026219
                                     at /rustc/24bdc6d73a75dce9a7013ebc7c037013ff4ea099/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
         2:     0x560b373ac170 - std::sys_common::backtrace::_print_fmt::hba56c7f796a4152f
                                     at /rustc/24bdc6d73a75dce9a7013ebc7c037013ff4ea099/library/std/src/sys_common/backtrace.rs:67:5
         3:     0x560b373ac170 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h214637f1e26310e1
                                     at /rustc/24bdc6d73a75dce9a7013ebc7c037013ff4ea099/library/std/src/sys_common/backtrace.rs:46:22
         4:     0x560b373d220c - core::fmt::write::h7aa6cd0067dca82a
                                     at /rustc/24bdc6d73a75dce9a7013ebc7c037013ff4ea099/library/core/src/fmt/mod.rs:1110:17
         5:     0x560b373a8b55 - std::io::Write::write_fmt::heb07fc0616bbd06d
                                     at /rustc/24bdc6d73a75dce9a7013ebc7c037013ff4ea099/library/std/src/io/mod.rs:1588:15
         6:     0x560b373aeb2b - std::sys_common::backtrace::_print::h2c2441c37e894fb5
                                     at /rustc/24bdc6d73a75dce9a7013ebc7c037013ff4ea099/library/std/src/sys_common/backtrace.rs:49:5
         7:     0x560b373aeb2b - std::sys_common::backtrace::print::h4fb679ac439362ea
                                     at /rustc/24bdc6d73a75dce9a7013ebc7c037013ff4ea099/library/std/src/sys_common/backtrace.rs:36:9
         8:     0x560b373aeb2b - std::panicking::default_hook::{{closure}}::h56bbadec2356e5d2
                                     at /rustc/24bdc6d73a75dce9a7013ebc7c037013ff4ea099/library/std/src/panicking.rs:208:50
         9:     0x560b373ae601 - std::panicking::default_hook::hb25822b45f6fdc4e
                                     at /rustc/24bdc6d73a75dce9a7013ebc7c037013ff4ea099/library/std/src/panicking.rs:225:9
        10:     0x560b373af1f4 - std::panicking::rust_panic_with_hook::h4da5578e7277d2d4
                                     at /rustc/24bdc6d73a75dce9a7013ebc7c037013ff4ea099/library/std/src/panicking.rs:622:17
        11:     0x560b373aecd7 - std::panicking::begin_panic_handler::{{closure}}::h003783ddb3cba4e8
                                     at /rustc/24bdc6d73a75dce9a7013ebc7c037013ff4ea099/library/std/src/panicking.rs:519:13
        12:     0x560b373ac64c - std::sys_common::backtrace::__rust_end_short_backtrace::hd138d2032731ed21
                                     at /rustc/24bdc6d73a75dce9a7013ebc7c037013ff4ea099/library/std/src/sys_common/backtrace.rs:141:18
        13:     0x560b373aec39 - rust_begin_unwind
                                     at /rustc/24bdc6d73a75dce9a7013ebc7c037013ff4ea099/library/std/src/panicking.rs:515:5
        14:     0x560b36df9a61 - core::panicking::panic_fmt::hbe99dddd3092ba3c
                                     at /rustc/24bdc6d73a75dce9a7013ebc7c037013ff4ea099/library/core/src/panicking.rs:92:14
        15:     0x560b36df9b53 - core::result::unwrap_failed::hf79563fef9d11ab8
                                     at /rustc/24bdc6d73a75dce9a7013ebc7c037013ff4ea099/library/core/src/result.rs:1355:5
        16:     0x560b36e03446 - core::result::Result<T,E>::expect::h06712fec5b6af28f
                                     at /rustc/24bdc6d73a75dce9a7013ebc7c037013ff4ea099/library/core/src/result.rs:997:23
        17:     0x560b36dff087 - build_script_build::main::hd17350fdb5912970
                                     at /home/dreamer/.cargo/git/checkouts/sleef-sys-19b817f705a3e80d/f0a65b8/build.rs:138:20
        18:     0x560b36dffa2b - core::ops::function::FnOnce::call_once::h98d8bbb42ee8a553
                                     at /rustc/24bdc6d73a75dce9a7013ebc7c037013ff4ea099/library/core/src/ops/function.rs:227:5
        19:     0x560b36e03e5e - std::sys_common::backtrace::__rust_begin_short_backtrace::h79cb0a0ad5b43d4f
                                     at /rustc/24bdc6d73a75dce9a7013ebc7c037013ff4ea099/library/std/src/sys_common/backtrace.rs:125:18
        20:     0x560b36e01241 - std::rt::lang_start::{{closure}}::h2bd24ce52f66acb1
                                     at /rustc/24bdc6d73a75dce9a7013ebc7c037013ff4ea099/library/std/src/rt.rs:49:18
        21:     0x560b373af7f9 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::hd933294140eb11aa
                                     at /rustc/24bdc6d73a75dce9a7013ebc7c037013ff4ea099/library/core/src/ops/function.rs:259:13
        22:     0x560b373af7f9 - std::panicking::try::do_call::h8342fe3d9218b807
                                     at /rustc/24bdc6d73a75dce9a7013ebc7c037013ff4ea099/library/std/src/panicking.rs:401:40
        23:     0x560b373af7f9 - std::panicking::try::hcbd73d6d0d58a8f0
                                     at /rustc/24bdc6d73a75dce9a7013ebc7c037013ff4ea099/library/std/src/panicking.rs:365:19
        24:     0x560b373af7f9 - std::panic::catch_unwind::hde9cf73f810acfcc
                                     at /rustc/24bdc6d73a75dce9a7013ebc7c037013ff4ea099/library/std/src/panic.rs:434:14
        25:     0x560b373af7f9 - std::rt::lang_start_internal::heb39e7ea6e5d6f6f
                                     at /rustc/24bdc6d73a75dce9a7013ebc7c037013ff4ea099/library/std/src/rt.rs:34:21
        26:     0x560b36e01220 - std::rt::lang_start::h8f523ee877542271
                                     at /rustc/24bdc6d73a75dce9a7013ebc7c037013ff4ea099/library/std/src/rt.rs:48:5
        27:     0x560b36dff3fc - main
        28:     0x7f9d7e4a809b - __libc_start_main
        29:     0x560b36dfa25a - _start
        30:                0x0 - <unknown>
    warning: build failed, waiting for other jobs to finish...
    error: build failed
    
    wgpu bug sleef build bug linux 
    opened by dromer 12
  • NoteOff events don't end Decay phase

    NoteOff events don't end Decay phase

    Describe the bug The Decay phase of the envelope does not end with a NoteOff event.

    Expected behavior A NoteOff event should terminate the Decay phase and immediately begin the Release phase, at its current level.

    What did you try to do I created two functionally identical patches (FXP patches here if needed) in OctaSine 0.6, which is unaffected by this issue, and in OctaSine 0.7, which is affected by this issue:

    It uses a relatively long decay rate, but a relatively short release rate. While playing a "Clavinet" type sequence, which utilizes very short notes, it exhibits the issue clearly:

    https://user-images.githubusercontent.com/1408749/174196304-76af0799-f72f-4620-a85b-65de68b15d7d.mp4

    Software (please complete the following information):

    • OctaSine version: v0.7.0 (b05fcf1) (gl).
    • DAW: FL Studio 12 x64.
    • OS: Windows 10.0.19042 (Windows 10 Pro) [64-bit]
    bug breaking 
    opened by bryc 8
  • OctaSine causes ableton to crash when loading it

    OctaSine causes ableton to crash when loading it

    Describe the bug Loading OctaSine in ableton makes it crash

    What did you try to do Steps to reproduce the behavior:

    1. Open Ableton 10.1.35
    2. Load OctaSine on an empty midi track
    3. Ableton crashes

    Expected behavior Ableton doesn't crash and you should be able to access the plugin

    Software (please complete the following information):

    • OctaSine version 0.5.1
    • DAW Ableton Live Intro 10
    • OS: Windows 10

    Additional context Processor Intel(R) Celeron(R) N4000 CPU @ 1.10GHz 1.10 GHz Installed RAM 4.00 GB (3.77 GB usable) System type 64-bit operating system, x64-based processor

    Log file contents* OctaSine.log

    10:36:14 [INFO] init
    10:36:14 [INFO] OS: Windows 10.0.19042 (Windows 10 Pro) [64-bit]
    10:36:14 [INFO] OctaSine build: v0.5.2 (87b0433)
    10:36:14 [ERROR] Couldn't load settings: The system cannot find the path specified. (os error 3)
    10:36:15 [INFO] create_descriptor_pool with 64 max sets
    10:36:15 [INFO] total 128 views and 64 samplers
    10:36:15 [INFO] allocate_one
    10:36:15 [INFO] Creating a pipeline layout with 1 sets and 0 root constants
    10:36:15 [WARN] Unknown decoration ColMajor
    10:36:15 [WARN] Unknown decoration MatrixStride
    10:36:15 [WARN] Treating VertexIndex as unsigned
    10:36:15 [ERROR] D3DCompile error 8876086c: error X3506: unrecognized compiler target 'vs_5_1'
     
    10:36:15 [ERROR] thread 'unnamed' panicked at 'failed to create graphics pipeline: Implementation specific error occurred': C:\Users\runneradmin\.cargo\registry\src\github.com-1ecc6299db9ec823\wgpu-core-0.7.1\src\device\mod.rs:2251
    
    
    wgpu bug windows 
    opened by grainmagic 7
  • CC64 midi controller not working

    CC64 midi controller not working

    Hi, I'd like to suggest that this plug-in could handle the MIDI CC64 hold controller (or any other foot /sustain controller)), so that we could use it for piano like patches or anything similar. I haven't being able to make it work, that's why I'm opening this issue.

    If there's some way to use this feature, please let me know. Otherwise hopefully this could be implemented in future releases.

    Thanks a lot for making this great synth!

    Best regards.

    enhancement 
    opened by Exink 6
  • Parameter automation not working in Bitwig

    Parameter automation not working in Bitwig

    Describe the feature It appears currently there are no parameters exposed for automation. It would be great to add parameter automation for most parameters, as it makes sense for parameters like like: levels, decay/release times, operator frequencies (selecting LFO shape might not make sense, for example).

    In case this is a bug:

    Software (please complete the following information):

    • OctaSine version: custom build from #85
    • DAW: Bitwig 4.3.4
    • OS: Windows 10
    bug 
    opened by kzantow 6
  • Feature request: shorter envelopes

    Feature request: shorter envelopes

    Describe the bug The smallest amount one can adjust the envelopes is not small enough for the needs of some percussive sounds. For example, zooming in all the way like like this: image With noise yields an audible volume ramp-up, which is not ideal for things like hi-hats, see the corresponding waveform, approximately 20 milliseconds: image

    What did you try to do

    • Enable a single operator
    • Set to noise
    • Adjust envelope to the smallest attack and decay possible, sustain 0

    Expected behavior There is no volume ramp up -- ideally, the attack phase could be length of 0, and either no decay (no sound) or a very fast < 5ms sound.

    Screenshots (added in description)

    Software (please complete the following information):

    • OctaSine version: v0.7.0 (the info button is lower-right btw)
    • DAW: Bitwig 4.3.4
    • OS: Windows 10
    enhancement breaking 
    opened by kzantow 6
  • Some problem with buffer synchronize

    Some problem with buffer synchronize

    Greetings!

    Thanks for the new release and for the fixes! In the new version, I noticed some problem with synchronizing notes when the buffer increases. Below are screenshots with the minimum and maximum buffer. Thank you

    small buffer SNHR_2

    big buffer SNHR

    • OctaSine version 0.5.4
    • DAW Renoise 3.3.2
    • OS: macOS 10.13.6

    Thnx for your work and have nice day!

    bug 
    opened by KlashKontakt 6
  • OpenGL error on the vst and crashing the daw

    OpenGL error on the vst and crashing the daw

    Describe the bug clicking the vst causes ableton to crash.

    What did you try to do Steps to reproduce the behavior:

    1. go to vsts
    2. click on octasine vst

    Expected behavior expected the vst to load but nothing happens, it just crashes ableton.

    Screenshots

    Software:

    • OctaSine 0.7.0 (4ea0e33) (gl)
    • DAW: Ableton Live Suite 11
    • OS: Windows 10.0.19044

    Log file contents 17:25:13 [INFO] init 17:25:13 [INFO] OS: Windows 10.0.19044 (Windows 10 Pro) [64-bit] 17:25:13 [INFO] OctaSine build: v0.7.0 (4ea0e33) (gl) 17:25:13 [ERROR] thread '' panicked at 'Could not create OpenGL context: CreationFailed(())': C:\Users\runneradmin.cargo\git\checkouts\baseview-9d6c750431f4479e\b371263\src\win\window.rs:519

    bug 
    opened by levyonthecrack 5
  • LFO does not work like a typical LFO

    LFO does not work like a typical LFO

    In most synths, as the amount is increased, it is applied in both directions equally and linearly. In OctaSine, it only goes in one direction at a time, and it appears to increase exponentially.

    I feel this is going to throw people off; I've personally never encountered an LFO working like this before.

    A vibrato or tremolo, or other traditional LFO effect requires the same amount to be applied in both directions, and ideally is linear, for less precision needed during modwheel performances.

    I can't make a satisfying vibrato using OctaSine's LFOs, it seems more geared toward atonal or effect sounds, which is a bit limiting.

    It would be good if each LFO had a mode switch, to go from the current LFO (assuming you wish to keep it at all) to a more traditional one. Also, I'd suggest adding Sine to the waveform list. A slowly modulated triangle does not achieve the same range and shape as a sine at the crest point, it can have a significant effect on the sound.

    Also, the pitch bend doesn't seem to react, so that cannot be used to get around this.

    enhancement 
    opened by bryc 5
  • Octasine Ver. 0.8.2 crashes on launch.

    Octasine Ver. 0.8.2 crashes on launch.

    Describe the bug The bug is my DAW crashing when I try to launch Octasine.

    What did you try to do Steps to reproduce the behavior:

    1. Find Octasine in the plugin directory.
    2. Drag Octasine to the plugin import spot.
    3. DAW Crashes.

    Expected behavior I expected the program to run when I launched it in my DAW.

    Screenshots https://user-images.githubusercontent.com/121590713/209895596-e7d4c89e-3ec6-4a1d-a7f0-2dd5e351473c.png https://user-images.githubusercontent.com/121590713/209895601-6ef73c08-3b06-49d3-8cd8-27cd4a9b78fc.png

    Software (please complete the following information):

    • OctaSine version 0.8.2.
    • DAW [My DAW is Waveform. I have also tried Soundbridge and that also crashes.]
    • OS: [Windows 10]

    Additional context I put "OctaSine v0.8.dll" in C:\Program Files\VstPlugins

    Log file contents Please include the contents of the OctaSine log file (OctaSine.log). Its location depends on your operating system (replace Alice with your username):

    • On macOS: /Users/Alice/Library/Application Support/com.OctaSine.OctaSine/OctaSine.log
    • On Windows: C:\Users\Alice\Documents\OctaSine\OctaSine.log
    • On Linux: /home/Alice/.config/octasine/OctaSine.log
    Octasine.log:
    20:15:01 [INFO] init
    
    20:15:01 [INFO] OS: Windows 10.0.19045 (Windows 10 Home) [64-bit]
    20:15:01 [INFO] OctaSine build: v0.8.2 (6abeae3) (gl)
    20:15:01 [ERROR] thread '<unnamed>' panicked at 'ERROR: 0:13: 'location' : not supported for this version or the enabled extensions 
    ERROR: 0:13: '' : missing #endif 
    ERROR: 0:13: '' : compilation terminated 
    ERROR: 3 compilation errors.  No code generated.
    
    ': C:\Users\runneradmin\.cargo\registry\src\git
    
    Soundbridge.log (I think it might be helpful):
    [SoundBridge.log](https://github.com/greatest-ape/OctaSine/files/10317304/SoundBridge.log)
    hub.com-1ecc6299db9ec823\iced_glow-0.5.1\src\program.rs:77
    
    
    
    bug 
    opened by BubbaByce 3
  • FR: Pitch bend support?

    FR: Pitch bend support?

    Is it correct, that this synth currently does not have support for pitch bend? If so, that is really a pity, because it really sounds great, but having no pitch bend makes it much less useful for expressive lead and bass sounds.

    It would be great to see that added, preferably with a configurable pitch bend range, even better with seperate up/down amounts.

    I tried working around the lack of pitch bend support by using a plugin to convert PB into a MIDI control change and assign that to a synth param in Carla. Alas, that doesn't work well, because the Master Frequency param has a very exponential response, so it's almost impossible to find the right maximum value to have e.g a modulation range of 2 semitones. The oscillator fine frequency param works better, but then you would need to assign the same CC to several params (OSC1,2,3,4), which most hosts won't allow (Carla certainly doesn't).

    enhancement 
    opened by SpotlightKid 1
  • Build fails: use of undeclared crate or module `platform` [FreeBSD support]

    Build fails: use of undeclared crate or module `platform` [FreeBSD support]

    error[E0433]: failed to resolve: use of undeclared crate or module `platform`
      --> /disk-samsung/freebsd-ports/audio/octasine/work/baseview-b3712638bacb3fdf2883cb5aa3f6caed0e91ac8c/src/window.rs:16:20
       |
    16 |     window_handle: platform::WindowHandle,
       |                    ^^^^^^^^ use of undeclared crate or module `platform`
    
    error[E0433]: failed to resolve: use of undeclared crate or module `platform`
      --> /disk-samsung/freebsd-ports/audio/octasine/work/baseview-b3712638bacb3fdf2883cb5aa3f6caed0e91ac8c/src/window.rs:28:27
       |
    28 |     fn new(window_handle: platform::WindowHandle) -> Self {
       |                           ^^^^^^^^ use of undeclared crate or module `platform`
    
    error[E0433]: failed to resolve: use of undeclared crate or module `platform`
      --> /disk-samsung/freebsd-ports/audio/octasine/work/baseview-b3712638bacb3fdf2883cb5aa3f6caed0e91ac8c/src/window.rs:56:21
       |
    56 |     window: &'a mut platform::Window,
       |                     ^^^^^^^^ use of undeclared crate or module `platform`
    
    error[E0433]: failed to resolve: use of undeclared crate or module `platform`
      --> /disk-samsung/freebsd-ports/audio/octasine/work/baseview-b3712638bacb3fdf2883cb5aa3f6caed0e91ac8c/src/window.rs:62:36
       |
    62 |     pub(crate) fn new(window: &mut platform::Window) -> Window {
       |                                    ^^^^^^^^ use of undeclared crate or module `platform`
    
    error[E0433]: failed to resolve: use of undeclared crate or module `platform`
      --> /disk-samsung/freebsd-ports/audio/octasine/work/baseview-b3712638bacb3fdf2883cb5aa3f6caed0e91ac8c/src/gl/mod.rs:69:20
       |
    69 |     CreationFailed(platform::CreationFailedError),
       |                    ^^^^^^^^ use of undeclared crate or module `platform`
    
    error[E0433]: failed to resolve: use of undeclared crate or module `platform`
      --> /disk-samsung/freebsd-ports/audio/octasine/work/baseview-b3712638bacb3fdf2883cb5aa3f6caed0e91ac8c/src/gl/mod.rs:73:14
       |
    73 |     context: platform::GlContext,
       |              ^^^^^^^^ use of undeclared crate or module `platform`
    
    error[E0433]: failed to resolve: use of undeclared crate or module `platform`
      --> /disk-samsung/freebsd-ports/audio/octasine/work/baseview-b3712638bacb3fdf2883cb5aa3f6caed0e91ac8c/src/gl/mod.rs:82:9
       |
    82 |         platform::GlContext::create(parent, config)
       |         ^^^^^^^^ use of undeclared crate or module `platform`
    
    error[E0433]: failed to resolve: use of undeclared crate or module `platform`
      --> /disk-samsung/freebsd-ports/audio/octasine/work/baseview-b3712638bacb3fdf2883cb5aa3f6caed0e91ac8c/src/window.rs:73:39
       |
    73 |         let window_handle = platform::Window::open_parented::<P, H, B>(parent, options, build);
       |                                       ^^^^^^ not found in `platform`
       |
    

    The platrorm crate used in the code isn't listed in Cargo.lock

    Version: 0.8.1 rust-1.63.0 FreeBSD 13.1 STABLE

    enhancement 
    opened by yurivict 4
  • Cannot resize plugin window in Carla

    Cannot resize plugin window in Carla

    Describe the bug When opening OctaSine 0.8 in Carla (https://github.com/falkTX/Carla ) the plugin window is too small and cannot be resized.

    What did you try to do Steps to reproduce the behavior:

    1. Open Carla (I'm using 2.6.0-alpha1)
    2. Load Octasine
    3. Press the cog to open the plugin gui
    4. Try to resize the plugin window by double-clicking on the title bar or dragging from corners

    Expected behavior The plugin window should resize

    Screenshots This is the size that the plugin opens at and cannot be resized from it

    Screenshot from 2022-10-19 12-23-56

    Software (please complete the following information):

    • OctaSine version: 0.8
    • DAW: Carla
    • OS: Ubuntu 22.04 (X11)

    Additional context Using a screen resolution of 3840x2400 with fractional scaling enabled

    Log file contents Please include the contents of the OctaSine log file (OctaSine.log). Its location depends on your operating system (replace Alice with your username):

    • On macOS: /Users/Alice/Library/Application Support/com.OctaSine.OctaSine/OctaSine.log
    • On Windows: C:\Users\Alice\Documents\OctaSine\OctaSine.log
    • On Linux: /home/Alice/.config/octasine/OctaSine.log
    11:23:28 [INFO] init
    11:23:29 [INFO] OS: Ubuntu 22.04 (jammy) [64-bit]
    11:23:29 [INFO] OctaSine build: v0.8.0 (24b813e) (gl)
    
    bug linux 
    opened by hellocatfood 1
  • Make it work with Wayland?

    Make it work with Wayland?

    Hi there,

    Seems like a great synth but can't use it because it is hung up on X11, which in turn is becoming obsolete quickly. So I'm here to show my support for enabling OctaSine to work on Wayland.

    • A
    enhancement linux 
    opened by 6-AND-9 1
Releases(v0.8.2)
  • v0.8.2(Dec 22, 2022)

  • v0.8.1(Oct 29, 2022)

    This release features native Apple Silicon support, performance improvements and bug fixes, including making parameters automatable in Bitwig Studio and Carla.

    Audio output is not bit-for-bit identical to version 0.8.0, but there shouldn't be any audible differences.

    Added

    • Add Apple Silicon support. The macOS release is now built as a universal binary

    Changed

    • Improve performance by around 10% in many cases by improving CPU cache behaviour in audio generation
    • Port several SLEEF functions to Rust to avoid relying on undefined behaviour, remove the need to use a nightly compiler and ease cross-compilation, e.g., for Apple Silicon. Unfortunately, performance of these functions is decreased somewhat.
    • In audio generation, skip extracting voice data if envelope is ended
    • Update dependencies

    Fixed

    • Fix bug where plugin didn't properly tell host about automatable parameters, causing them not to be picked up by Bitwig, Carla and possibly other hosts
    • Tweak audio gen to fix (very minor) differences between simd widths
    • When envelope ends, set voice operator phase to 0.0
    Source code(tar.gz)
    Source code(zip)
    OctaSine-v0.8.1-macOS.zip(2.90 MB)
    OctaSine-v0.8.1-Ubuntu-20_04.zip(2.14 MB)
    OctaSine-v0.8.1-Windows.zip(1.33 MB)
  • v0.8.0(Aug 28, 2022)

    This release features revamped stereo panning, shorter minimum envelope stage lengths, improved patch management, displaying of waveforms and various fixes.

    This release contains breaking changes. Patches might not be able to be fully migrated. However, in many cases, importing patches from 0.7.0 and doing two changes will work:

    • Setting mod out values to 0.7071 of what they previously were
    • Setting LFO targets to the correct value (they may have been changed)

    You can keep version 0.7.0 alongside this release, since they use different VST2 plugin IDs.

    Added

    • Display (part of) left and right channel waveforms for all operators
    • Add patch section dropdown with actions for opening patch/bank files, saving patches/banks, renaming patches and clearing current patch/bank
    • Add functionality for setting parameter values exactly. Click on values to display a value input window.
    • Reintroduce master volume and master frequency parameters as LFO targets (removed in version 0.7)

    Changed

    • Rework panning
      • Use true stereo panning (not just balance) for mix and modulation output
      • Stop using constant power panning for modulation output. Previously, when an operator was panned to the center, its modulation output would scale at cos(π/4) (approximately 0.7071) the rate of feedback but at the same rate when panned hard to a side, which is not very intuitive.
    • Decrease minimum envelope stage duration from 10ms to 3.33ms
    • When note off message is received during envelope attack phase, always go to release phase, even if it means that with low sustain volumes and a long release time, short notes might be loud for a lot longer than longer notes. This is how FM8 envelopes work.
    Source code(tar.gz)
    Source code(zip)
    OctaSine-v0.8.0-macOS-Intel.zip(1.49 MB)
    OctaSine-v0.8.0-Ubuntu-20_04.zip(2.14 MB)
    OctaSine-v0.8.0-Windows.zip(1.31 MB)
  • v0.7.0(Jun 8, 2022)

    This is a large release featuring lots of changes. Some major ones include:

    • Full interface redesign for a more modern look
    • Operators can now modulate multiple targets. Routing parameters were updated to be more intuitive
    • LFOs were redesigned to be easier to work with
    • Envelope groups were implemented for adjusting multiple envelopes simultaneously
    • Operator and LFO mute buttons were added

    This release contains breaking changes. It is not compatible with patches created with previous versions. However, you can keep using version 0.6.1 alongside this release, since it uses a different VST2 plugin ID.

    Changed

    Operator changes

    • Allow operators to modulate multiple carriers
    • Set modulation index (mod out) in modulator, not carrier
    • Increase range of feedback parameter to match modulation index
    • Replace additive factor with mix out parameter, which doesn't affect modulation output
    • Update frequency ratios, adding both harmonic and disharmonic ones
    • Update free frequency parameter values
    • Add operator mute parameter
    • Feedback is now affected by key velocity
    • Interpolate key velocity if key is pressed while envelope is still active
    • Fix various envelope issues
    • Remove ability to set end volume of attack (it is now always at maximum)
    • Increase minimum envelope stage length to 10ms

    LFO changes

    • Use a more traditional LFO design that oscillates around the base value, not in a single direction.
    • Scale LFO effect linearly and bypass normal parameter limits when targeting master frequency, master volume, operator free frequency, operator volume, LFO amount (magnitude) or LFO free frequency parameters
    • Make LFO triangle wave type start at value 0.0
    • Add LFO wave types reverse triangle, sine and reverse sine
    • Default to no target
    • Remove master volume and master frequency targets, since LFOs are really per-voice
    • Add LFO mute parameter
    • When BPM sync is turned off, use base frequency of 1 Hz

    Other audio changes

    • Update master frequency parameter values
    • Use time-based instead of sample-based interpolation for parameters and LFOs for sample rate independence

    GUI changes

    • Major GUI redesign with layout and color changes
    • Add envelope group functionality, enabling simultaneously editing multiple ones
    • Zoom in envelopes by dragging up/down
    • Control mix output instead of modulation output with modulation matrix operator boxes
    • Replace operator wave type picker with a custom widget that displays the waveform
    • Replace the LFO shape knob with a custom widget that displays the waveform
    • Add per-operator modulation target picker
    • Add per-operator mute button
    • Add per-LFO mute button

    Other changes

    • Add octasine-cli crate with subcommands to convert between exported patches / patch banks and JSON
    • Bump plugin unique ID to allow using this version in parallel with previous versions
    • Use directories crate to determine where to save preference and log files
    • Use gzip compression on exported patches and patch banks
    • Update multiple dependencies, notably iced and baseview
    • Do major code refactor

    Fixed

    • Fetch BPM once per process call instead of each sample
    Source code(tar.gz)
    Source code(zip)
    OctaSine-v0.7.0-macOS-Intel.zip(1.33 MB)
    OctaSine-v0.7.0-Ubuntu-20_04.zip(2.04 MB)
    OctaSine-v0.7.0-Windows.zip(1.19 MB)
  • v0.6.1(Apr 28, 2022)

  • v0.6.0(Jan 8, 2022)

    This release contains breaking changes, i.e., changes that can affect how patches sound.

    Changed

    • When triggering note while envelope is still running, restart envelope from zero volume
    • To prevent artefacts, for very short envelope stages, the normal logarithmic slopes will be mixed with linear slopes. This is now done for slightly longer envelope stages
    • Adjust LFO wave shapes for better beat fit
    • Interpolate parameters for 32 samples

    Fixed

    • Properly handle audio buffers of arbitrary size
    • Properly handle midi event timings
    • Fix LFO retrigger issues
    • Properly treat MIDI note on/off event with 0 velocity as note off
    Source code(tar.gz)
    Source code(zip)
    OctaSine-v0.6.0-macOS-Intel.zip(1.09 MB)
    OctaSine-v0.6.0-Windows.zip(989.63 KB)
  • v0.5.4(Dec 20, 2021)

  • v0.5.3(Jul 18, 2021)

  • v0.5.2(Jul 5, 2021)

  • v0.5.1(May 29, 2021)

Owner
Joakim Frostegård
Joakim Frostegård
The frequency-perfect synthesizer for a PC-speaker

?? BeeSynth Project The frequency-perfect synthesizer for a PC speaker ✔️ Features Written in Rust ?? Support playing MP3, WAV, FLAC, tracker music an

Александр 9 Jul 17, 2023
A very simple audio synthesizer with a tuix gui

In this tutorial we'll create a very simple audio synthesiser application from scratch with a ui using tuix. The finished code for this tutorial can b

George Atkinson 24 Jan 6, 2023
MIDI-controlled stereo-preserving granular-synthesizer LV2 plugin

Stereog "Stereog" rhymes with "hairy dog." Stereog is a MIDI-controlled stereo-preserving granular synthesizer LV2 plugin. It is experimental software

Ed Cashin 6 Jun 3, 2022
6 operator FM synthesizer. VST3/CLAP plugin.

Foam 6 operator FM synth with a cross-oscillator modulation matrix, available in VST3 and CLAP plugin formats. Open source under GPLv3. In development

null 4 Sep 4, 2023
Spotify for the terminal written in Rust 🚀

Spotify TUI A Spotify client for the terminal written in Rust. The terminal in the demo above is using the Rigel theme. Spotify TUI Installation Homeb

Alexander Keliris 14.1k Jan 1, 2023
A music theory guide written in Rust.

Rust Music Theory A library and executable that provides programmatic implementation of the basis of the music theory. Table of Contents Overview Usag

Ozan Kaşıkçı 551 Dec 21, 2022
musify is a simple discord bot to play music within a voice channel, written in the rust programming language.

musify-rs musify is a simple discord bot to play music within a voice channel, written in the rust programming language. Features A simple song queue

NV6 5 Aug 14, 2022
A Spotify downloader written in rust, which does not require a premium account

DownOnSpot A Spotify downloader written in Rust Disclaimer DownOnSpot was not developed for piracy. It is meant to be used in compliance with DMCA, Se

oSumAtrIX 273 Jan 7, 2023
Terminal Music Player written in Rust

Terminal Music Player written in Rust Listen to music freely as both in freedom and free of charge! Freedom: As time goes by, online service providers

null 376 Jan 3, 2023
Loopers is graphical live looper, written in Rust, designed for ease of use and rock-solid stability

Loopers Loopers is a graphical live looper, written in Rust, designed for ease of use and rock-solid stability. It can be used as a practice tool, com

Micah Wylde 81 Dec 29, 2022
A drum machine written in Rust

rudiments rudiments is a step-sequencing drum machine that plays rhythm patterns using audio samples. Features 16-step programmable measures. Configur

Jonas Michel 141 Nov 23, 2022
🎵 A super simple VST written in Rust

DigiDist This is a simple little VST plugin, developed in Rust using the vst2 crate. It doesn't sound particularly great, but it demonstrates just how

Joe Clay 34 May 29, 2022
A simple GUI audio player written in Rust with egui. Inspired by foobar2000.

Music Player A simple GUI music player inspired by foobar2000 written in Rust using egui. The goal of this project is to learn about making gui/ nativ

Ryan Blecher 5 Sep 16, 2022
Small music theory library with MIDI capabilities written in Rust

mumuse Small music theory library with MIDI capabilities written in Rust (wip). Examples Creating notes and transpositions // Declare Note from &str l

Alexis LOUIS 4 Jul 27, 2022
A terminal music player written in the Rust language.

A terminal music player written in the Rust language. (Windows) Requirements Configuration file path: C:\Users\xxx\.config\music_player\config.yml # P

xiao hui 162 Nov 12, 2022
Tool for solving music harmonics written in rust.

Harmonized Tool for solving harmonics tasks Installation steps Requirements Make shure you have installed rust cargo If not: Download and run rust ins

Dmitry Miasnenko 0 Jan 28, 2022
API-agnostic audio plugin framework written in Rust

Because everything is better when you do it yourself - Rust VST3 and CLAP framework and plugins

Robbert van der Helm 415 Dec 27, 2022
ncspot is a ncurses Spotify client written in Rust using librespot.

ncspot is a ncurses Spotify client written in Rust using librespot. It is heavily inspired by ncurses MPD clients, such as ncmpc. My motivation was to provide a simple and resource friendly alternative to the official client as well as to support platforms that currently don't have a Spotify client, such as the *BSDs.

Henrik Friedrichsen 3.4k Jan 8, 2023
🎹 [WIP] Full-fledged software sampler written in Rust.

sampler This project aims to be a full-fledged software sampler written in Rust. While I initially used Apple's AUSampler for sampled instruments in m

soaky audio 12 Dec 27, 2022