Coder Social home page Coder Social logo

swesterfeld / spectmorph Goto Github PK

View Code? Open in Web Editor NEW
61.0 6.0 5.0 5.7 MB

SpectMorph: spectral audio morphing

Home Page: http://www.spectmorph.org

License: GNU Lesser General Public License v2.1

Makefile 1.35% Shell 2.33% C++ 88.47% M4 1.65% Python 1.62% C 2.03% Objective-C 0.78% Objective-C++ 0.17% Dockerfile 0.04% Rich Text Format 1.57%
lv2-plugin lv2 vst-plugin vst jack

spectmorph's Introduction

License Test Build Version

About:

SpectMorph is a free software project which allows to analyze samples of musical instruments, and to combine them (morphing). It can be used to construct hybrid sounds, for instance a sound between a trumpet and a flute; or smooth transitions, for instance a sound that starts as a trumpet and then gradually changes to a flute. In its current version, SpectMorph ships with many ready-to-use instruments which can be combined using morphing.

Compiling SpectMorph:

To compile SpectMorph, use the usual

./configure
make
make install

If you get a message that the instruments are missing, you can use the --with-download-instruments configure option to fix this (see below).

LV2 Support:

Configure should automatically determine via pkg-config whether the lv2 development headers are available. When the LV2 plugin doesn't get built, install them.

Plugins:

SpectMorph supports three different plugin formats,

  • CLAP plugin
  • VST plugin
  • LV2 plugin

for Linux, macOS (x86_64 and Apple Silicon) and 64-bit Windows, so it works in many different hosts, such as Ardour, Qtractor, Anklang, Bitwig, Renoise, Cubase, Ableton Live and others. For hosts that support CLAP, using the SpectMorph CLAP plugin is the preferred way of integration.

Controlling Morphing with Automation:

The plugin has four properties that can be automated by the host, called Control #1 ... Control #4. To use these, for instance for linear morphing, the Control Input can be set to "Control Signal #1" (or #2) in the UI. After that the host can change the morphing from left source to right source and back.

JACK:

The smjack program is a fully functional JACK Client using SpectMorph. You need to connect midi input and audio output (for instance with using QJackCtl).

Controlling Morphing with CCs:

The control inputs (Control Signal #1 ... Control Signal #4) are mapped to the midi CC controls (General Purpose Controller 1..4).

SpectMorph Instruments:

SpectMorph has a set of instruments which ship with official releases. These are required to use SpectMorph. The instruments are included in all binary releases. If you are building from the original source tarball, the instruments are also included (in the data directory).

If you're building from git, you will need to download the instruments before installing SpectMorph. The easiest way to do so is using:

$ ./autogen.sh --with-download-instruments

which will download the correct version of instruments automatically. You can also download the appropriate version of the instruments from the releases of the spectmorph-instruments git repository and store them in the data directory before building SpectMorph:

spectmorph's People

Contributors

0x1337c0d3 avatar jpcima avatar swesterfeld avatar trebmuh avatar xiejiss 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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

spectmorph's Issues

Plugin UI redraw broken on Sonoma 14.5

While the plugin UI works fine under macOS 13 and below, on 14.5 SpectMorph does not properly redraw its UI.

This means that although sliders, menus, buttons and so forth work (you can click on them and something happens), pre-lighting and feedback while the mouse button is not pressed doesn't. Also in the instrument editor the play position pointer is not updated while playing, unless you press the mouse button.

This affects both:

  • stable SpectMorph 0.6.1
  • unstable SpectMorph 1.0.0-beta1

LGPL licensing of ASE math functions

Hi,

the fast_log2() approximation reused from ASE (Anklang) has been copied with an MPL-2.0 licensing remark, starting here:

// This Source Code Form is licensed MPL-2.0: http://mozilla.org/MPL/2.0

I am perfectly fine with relicensing ASE math functions under the LGPL version used by SpectMorph, if that makes inclusion into SpectMorph easier.

Audio file support / DAW Integration

Is there a way to use .wav files as the instruments source? On the same note it would be great to be able to select channels from a DAW like Ardour as instrument sources even if only via jack. Any plans to incorporate those features in the future? This is going to make this plugin a must for all linux musicians!

Instrument editor: Center start play marker

Is it possible to center the "start play marker" while dragging the hzoom? It is easier to edit the exact begin of a sample if the start marker is always visible in the center of the screen.

Instrument editor: Note-off

If a note-off comes in, then SpectMorph should jump out of the loop inside the sample and play the part of the sample from behind the loop end marker till the end of the sample.

Example of cmd line morphing of two sounds

It would be helpful to create a folder or even repo for an example of how to use only the command line to create a sound of some length made from two morphed audio files (using smenc, smwaveset, etc). The VST either refuses to work or DAWs (on mac and linux) refuse to accept it. Cmd line tools are what enable any software project to escape most obligations to update projects for new software, so they should be emphasized in utility.

Is it possible to provide screen reader accessibility?

Hello,
I just found and started playing around with Spectmorph today, and I think the concept is very neat! I am mostly interested in creating my own presets, and especially instruments. However, I am visually impaired, which makes it challenging to use the plug-in. Specifically, the gui does not work with screen reading programs. I'm on Windows, btw, and cannot test on Mac or Linux.

To elaborate on the issue, screen readers cannot detect any of Spectmorph's gui controls. So far as a screen reader can tell, the gui is just one big foreign object.

From my limited understanding of how screen readers work, this usually happens if a gui doesnt' use standard controls/objects, or doesn't use an accessibility api to tell a screen reader about the window. I know nothing about software development , so I can't really suggest anything helpful. I'm hoping someone else can chime in if need be.

Perhaps it would be possible to modify the existing gui to be screen reader accessible? If not, the only idea I have at the moment is to maybe use Juce? It seems to produce more accessible guis, and is also cross-platform. However I have no idea if it would be practical in this case, since completely redoing the gui is probably not an easy process.

I really hope something can be done. Thank you very much for your time and consideration. Do let me know if you have any questions. I wish you the best of luck with development going forward!

Load stero wave files (mix to mono)

Most of my samples in my library are stereo. I would love be able to use them without having to mix them to mono manually. It would be nice if spectmorph could load them and mix them to mono and use them directly.

lv2lint fails on lv2 plugin

Hi! When packaging 0.5.1 for Arch Linux I ran lv2lint on the lv2 plugin:

cp -v lv2/.libs/*.so lv2/
LV2_PATH="${PWD}" lv2lint "http://spectmorph.org/plugins/spectmorph"
rm -v lv2/*.so

However, there are errors (and warnings):

Error opening '/usr/share/spectmorph/templates/2-instruments-linear-lfo.smplan'.
<http://spectmorph.org/plugins/spectmorph>
    [FAIL]  Symbols
              binary exports superfluous globally visible symbols: 
                * lv2ui_descriptor
              seeAlso: <http://lv2plug.in/ns/lv2core#binary>
    [WARN]  Linking
              binary links to non-whitelisted shared libraries: 
                * libspectmorph.so.0
                * libspectmorphglui.so.0
                * libfftw3f_threads.so.3
                * libfftw3f.so.3
                * libsndfile.so.1
                * libz.so.1
                * libX11.so.6
                * libGL.so.1
                * libfreetype.so.6
                * libglib-2.0.so.0
              seeAlso: <http://lv2plug.in/ns/lv2core#binary>
    [WARN]  Class
              type is just lv2:Plugin
              seeAlso: <http://lv2plug.in/ns/lv2core#Plugin>
    [FAIL]  Worker
              work:interface not returned by 'extention_data'
              seeAlso: <http://lv2plug.in/ns/ext/worker#interface>
    [WARN]  Hard RT Capable
              not advertized as real-time safe
              seeAlso: <http://lv2plug.in/ns/lv2core#hardRTCapable>
  <http://spectmorph.org/plugins/spectmorph#ui>
    [FAIL]  Symbols
              binary exports superfluous globally visible symbols: 
                * lv2_descriptor
              seeAlso: <http://lv2plug.in/ns/lv2core#binary>
    [WARN]  Instance Access
              usage of instance-access is highly discouraged
              seeAlso: <http://lv2plug.in/ns/ext/instance-access>
    [WARN]  Mixed DSP/UI
              mixing DSP and UI code in same binary is discouraged
              seeAlso: <http://lv2plug.in/ns/extensions/ui#>
    [FAIL]  Toolkit
              UI toolkit <http://lv2plug.in/ns/extensions/ui#X11UI> unkown
              seeAlso: <http://lv2plug.in/ns/extensions/ui#ui>

Note, I'm running lv2lint on the plugin before the files are installed into the "filesystem" using fakeroot (hence the first error message I assume, but I also don't know if this is a error message that will make lv2lint fail or not).

Configure script error

running the configure script shows the following error

./configure: line 21159: syntax error near unexpected token `ext'
./configure: line 21159: `AX_CXX_COMPILE_STDCXX_14(ext)'

This is fixed by the changing (ext) to [ext] in the configure.ac file.

ADSR support

Per-voice ADSR support should be added to SpectMorph, which for instance would allow sounds with a hard attack.

Overlinking issues

It seems, that spectmorph is overlinking its components.

During packaging for Arch Linux, I run namcap on the resulting package and it warns about some unused shared libraries:

spectmorph W: Unused shared library '/usr/lib/libpthread.so.0' by file ('usr/bin/smstrip')
spectmorph W: Unused shared library '/usr/lib/libgobject-2.0.so.0' by file ('usr/lib/libspectmorph.so.0.0.0')
spectmorph W: Unused shared library '/usr/lib/libgmodule-2.0.so.0' by file ('usr/lib/libspectmorph.so.0.0.0')
spectmorph W: Unused shared library '/usr/lib/libgthread-2.0.so.0' by file ('usr/lib/libspectmorph.so.0.0.0')
spectmorph W: Unused shared library '/usr/lib/libgobject-2.0.so.0' by file ('usr/lib/libspectmorphglui.so.0.0.0')
spectmorph W: Unused shared library '/usr/lib/libgmodule-2.0.so.0' by file ('usr/lib/libspectmorphglui.so.0.0.0')
spectmorph W: Unused shared library '/usr/lib/libgthread-2.0.so.0' by file ('usr/lib/libspectmorphglui.so.0.0.0')
spectmorph W: Unused shared library '/usr/lib/libgobject-2.0.so.0' by file ('usr/lib/libspectmorphgui.so.0.0.0')
spectmorph W: Unused shared library '/usr/lib/libgmodule-2.0.so.0' by file ('usr/lib/libspectmorphgui.so.0.0.0')
spectmorph W: Unused shared library '/usr/lib/libgthread-2.0.so.0' by file ('usr/lib/libspectmorphgui.so.0.0.0')
spectmorph W: Unused shared library '/usr/lib/libgobject-2.0.so.0' by file ('usr/lib/libspectmorphjack.so.0.0.0')
spectmorph W: Unused shared library '/usr/lib/libgmodule-2.0.so.0' by file ('usr/lib/libspectmorphjack.so.0.0.0')
spectmorph W: Unused shared library '/usr/lib/libgthread-2.0.so.0' by file ('usr/lib/libspectmorphjack.so.0.0.0')
spectmorph W: Unused shared library '/usr/lib/libglib-2.0.so.0' by file ('usr/lib/libspectmorphjack.so.0.0.0')
spectmorph W: Unused shared library '/usr/lib/libm.so.6' by file ('usr/lib/libspectmorphjack.so.0.0.0')
spectmorph W: Unused shared library '/usr/lib/libm.so.6' by file ('usr/lib/lv2/spectmorph.lv2/spectmorph_lv2.so')
spectmorph W: Unused shared library '/usr/lib/libgobject-2.0.so.0' by file ('usr/lib/vst/spectmorph_vst.so')
spectmorph W: Unused shared library '/usr/lib/libgmodule-2.0.so.0' by file ('usr/lib/vst/spectmorph_vst.so')
spectmorph W: Unused shared library '/usr/lib/libgthread-2.0.so.0' by file ('usr/lib/vst/spectmorph_vst.so')
spectmorph W: Unused shared library '/usr/lib/libglib-2.0.so.0' by file ('usr/lib/vst/spectmorph_vst.so')
spectmorph W: Unused shared library '/usr/lib/libm.so.6' by file ('usr/lib/vst/spectmorph_vst.so')

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.