archie3d / aeolus_plugin Goto Github PK
View Code? Open in Web Editor NEWPipe organ synthesizer (VST plugin)
Home Page: https://archie3d.github.io/aeolus_plugin/
License: GNU General Public License v3.0
Pipe organ synthesizer (VST plugin)
Home Page: https://archie3d.github.io/aeolus_plugin/
License: GNU General Public License v3.0
Using default configuration, the stop "Sesquialtera II" (Manual I) produces only 1 voice per any one pressed key.
The default config of the stop is:
{ "name": "Sesquialtera\nII", "type": "principal", "pipe": "sesqualtera", "chiff": 0.17, "gain": 3.0 }
But according to its name, it should connect 2 pipes and should produce two-voice sounds (at least).
Comment on that, please.
Currently the drop-down selection allows All
or a single discrete channel to be selected. It should be possible to select multiple discrete MIDI channels.
From @Synthematophon #18 (comment)
Hi, another question since my console sends the sequencer steps via MIDI channel 8 you implemented a controller dropdown list for choosing the channel. Actually i have additionally foot-piston which are unfortunately sending at channel 7. You were so kind to implement the issue with different notes for the sequencer. Would it be possible to choose different channels (beside to choose "all" in the dropdown list) for example via checkboxes?
Thanks a lot!
Using v0.1.12-20-gla0d0f0, it seems like having two of these in a raper project causes Reaper's time line updates to start stuttering
Hi!
g++ complains when compiling:
/home/kv/src/audio/aeolus_plugin/Source/aeolus/dsp/chiff.cpp:32:7: error: narrowing conversion of ‘4.41e+4f’ from ‘float’ to ‘size_t’ {aka ‘long unsigned int’} [-Wnarrowing]
32 | , _pipeResonator{SAMPLE_RATE}
Very nice work on the aeolus plugin.
Have you considered making an AUv3 plugin version of it? Or a standalone iPadOS version?
I believe JUCE already supports AUv3.
I noticed a few more things about the couplers (you call it "link" in the code):
Please consider modify follow issue:
In all I know pipe organ VST (Hauptwerk, Organteq, Grand Orgue etc) when you change stop of organ (e.g Flute) then it take effect on allredy sended MIDI.sendNote. Thus
For now in this stage of this app change of stops acts diffrent.
When you change stop there is no change in sound until you add new notesOn by MIDI
First of all, thank you so much for saving such a useful piece of software from abandonment!
I am a Mac user, and I found the pipe chiff a bit annoying ... I think it would be important to be able to adjust its volume.
I don't remember if it was there in Fons Adriansen's original, in the settings page that has not yet been ported to your new version ... I hope you will!
Best Regards
Alex
Hello. Given the fork is going in a new direction, might I suggest giving it a new name? I think the same issue has arisen previously, and Fons wasn't too keen on the confusion it created.
I have noticed another phenomenon: on a real organ, the increase in volume is not linear as the number of stops is increased. The sound "thickens" or becomes more intense rather than just getting louder. I don't know how to explain this better. Maybe it's just a psychoacoustic phenomenon. Nevertheless, would it be possible to introduce some kind of dynamic compression or something like that? So that when playing with an 8' flute the sound is not quite so quiet or weak, and when playing tutti you are almost overwhelmed by the volume.
Current configuration allows only one MIDI key to be assigned to sequencer action;:
"sequencer": {
"backward_key": 22,
"forward_key": 23
}
Extend this to allow multiple keys:
"sequencer": {
"backward_key": [22, 36],
"forward_key": [23, 37]
}
It would be great to have native Linux standalone and plugins as part of the releases. If not, would you be kind enough to provide instructions on how to build?
Could you build version 0.1.13 as VST plugin for win-64 (like "Aeolus-vst-win64-0.1.12.zip")?
That would be great.
Have you published a working Linux binary?
I would like to list your plugin on my site:
https://studiorack.github.io/studiorack-site/
However for that I need Mac, Linux and Windows binaries created!
Building under ubuntu, I got the following error at the linking stage:
Building under ubuntu, had the following error.
/usr/bin/ld: libAeolus_res.a(BinaryData1.cpp.o): relocation R_X86_64_PC32 against symbol `_ZN10BinaryData18default_organ_jsonE' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/Aeolus_VST3.dir/build.make:223: Aeolus_artefacts/VST3/Aeolus.vst3/Contents/x86_64-linux/Aeolus.so] Error 1
make[1]: *** [CMakeFiles/Makefile2:188: CMakeFiles/Aeolus_VST3.dir/all] Error 2
make: *** [Makefile:130: all] Error 2
Can be resolved by adding +set(CMAKE_POSITION_INDEPENDENT_CODE ON)
to CMakeLists.txt
Hi!
I got this float point exception crash, build with g++ 11.2.1
Reading symbols from ./cmake-build/Aeolus_artefacts/Debug/Standalone/Aeolus...
(gdb) run
Starting program: /media/src/src/audio/aeolus_plugin/cmake-build/Aeolus_artefacts/Debug/Standalone/Aeolus
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
JUCE v6.1.2
[Detaching after fork from child process 22693]
[Detaching after fork from child process 22694]
[New Thread 0x7fffec563640 (LWP 22697)]
[New Thread 0x7fffe69b3640 (LWP 22698)]
[Thread 0x7fffe69b3640 (LWP 22698) exited]
[New Thread 0x7fffe69b3640 (LWP 22699)]
[New Thread 0x7fffe61b2640 (LWP 22700)]
[New Thread 0x7fffe59b1640 (LWP 22701)]
[New Thread 0x7fffe51b0640 (LWP 22702)]
[New Thread 0x7fffe49af640 (LWP 22703)]
[New Thread 0x7fffcbfff640 (LWP 22704)]
[New Thread 0x7fffcb7fe640 (LWP 22705)]
[New Thread 0x7fffcaffd640 (LWP 22706)]
[New Thread 0x7fffca7fc640 (LWP 22707)]
[New Thread 0x7fffc9ffb640 (LWP 22708)]
[New Thread 0x7fffc97fa640 (LWP 22709)]
JUCE Assertion failure in rankwave.cpp:242JUCE Assertion failure in rankwave.cpp:242JUCE Assertion failure in rankwave.cpp:242
JUCE Assertion failure in rankwave.cpp:242
JUCE Assertion failure in rankwave.cpp:242
JUCE Assertion failure in rankwave.cpp:242
JUCE Assertion failure in rankwave.cpp:242
JUCE Assertion failure in rankwave.cpp:242
Thread 12 "Pool" received signal SIGFPE, Arithmetic exception.
[Switching to Thread 0x7fffca7fc640 (LWP 22707)]
0x0000000000443535 in aeolus::Pipewave::genwave (this=0x17e38a0) at /home/kv/src/audio/aeolus_plugin/Source/aeolus/rankwave.cpp:245
245 int k = (_sampleStep * SUB_FRAME_LENGTH - 1) / _loopLength + 1;
(gdb) bt
#0 0x0000000000443535 in aeolus::Pipewave::genwave (this=0x17e38a0) at /home/kv/src/audio/aeolus_plugin/Source/aeolus/rankwave.cpp:245
#1 0x00000000004428b4 in aeolus::Pipewave::prepateToPlay (this=0x17e38a0, sampleRate=44100) at /home/kv/src/audio/aeolus_plugin/Source/aeolus/rankwave.cpp:48
#2 0x000000000044463b in aeolus::Rankwave::prepareToPlay (this=0x17df8f0, sampleRate=44100) at /home/kv/src/audio/aeolus_plugin/Source/aeolus/rankwave.cpp:441
#3 0x0000000000434fd0 in operator() (__closure=0x198e0a0) at /home/kv/src/audio/aeolus_plugin/Source/aeolus/engine.cpp:147
#4 0x0000000000438580 in std::__invoke_impl<void, aeolus::EngineGlobal::updateStops(float)::<lambda()>&>(std::__invoke_other, struct {...} &) (__f=...) at /usr/include/c++/11/bits/invoke.h:61
#5 0x0000000000438474 in std::__invoke_r<void, aeolus::EngineGlobal::updateStops(float)::<lambda()>&>(struct {...} &) (__fn=...) at /usr/include/c++/11/bits/invoke.h:111
#6 0x000000000043834f in std::_Function_handler<void(), aeolus::EngineGlobal::updateStops(float)::<lambda()> >::_M_invoke(const std::_Any_data &) (__functor=...) at /usr/include/c++/11/bits/std_function.h:290
#7 0x00000000004d9514 in std::function<void ()>::operator()() const (this=0x19af920) at /usr/include/c++/11/bits/std_function.h:590
#8 0x0000000000480238 in juce::ThreadPool::LambdaJobWrapper::runJob (this=0x19af8c0) at /home/kv/src/audio/aeolus_plugin/JUCE/modules/juce_core/threads/juce_ThreadPool.cpp:169
#9 0x0000000000480c5e in juce::ThreadPool::runNextJob (this=0x7fffffffd2c0, thread=...) at /home/kv/src/audio/aeolus_plugin/JUCE/modules/juce_core/threads/juce_ThreadPool.cpp:384
#10 0x00000000004b82e2 in juce::ThreadPool::ThreadPoolThread::run (this=0x198cf70) at /home/kv/src/audio/aeolus_plugin/JUCE/modules/juce_core/threads/juce_ThreadPool.cpp:36
#11 0x000000000047ee99 in juce::Thread::threadEntryPoint (this=0x198cf70) at /home/kv/src/audio/aeolus_plugin/JUCE/modules/juce_core/threads/juce_Thread.cpp:96
#12 0x000000000047ef73 in juce::juce_threadEntryPoint (userData=0x198cf70) at /home/kv/src/audio/aeolus_plugin/JUCE/modules/juce_core/threads/juce_Thread.cpp:118
#13 0x00000000004a022f in juce::threadEntryProc (userData=0x198cf70) at /home/kv/src/audio/aeolus_plugin/JUCE/modules/juce_core/native/juce_posix_SharedCode.h:851
#14 0x00007ffff79142ba in start_thread (arg=<optimized out>) at pthread_create.c:442
#15 0x00007ffff799e440 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
Hi. When I use Aeolus plugin as vst3 instrument in daw(reaper), the reverb and output volume go up max immediately at some points. It happens at the start and the end of playback for sure, but occasionally in the middle of playback. I can't figure out the exact condition of this event. But it happens repeatedly.
I am using intel i7-9700, 24gb ram pc and windows 11. I tested it with another midi file on other daws like Cakewalk by Bandlab, Tracktion Waveform. I could find out it happens on them too.
I recorded a quick demonstration here.
https://www.youtube.com/watch?v=h2EGvRaniVc
Aeolus uses JUCE 7.0.5, which had the bug (juce-framework/JUCE#1242, fixed in 7.0.6 AFAIK) when the Audio/MIDI Settings window does not show up on Linux with GNOME (and maybe some other DEs), and it's impossible to change the settings e.g. MIDI inputs. The only way to change them was to re-login from other DE session which does not have this behaviour (e.g. Cinnamon).
I've tested with 7.0.9 (building from source), all seems to work fine (Arch Linux/EndeavourOS with GNOME 45).
The reason for this being an issue rather than a pull request is that the change is tiny (one only has to update the submodule to the latest tag).
Hello,
I've tried all possible combinations and CC #98 Aeolus control command don't seem to work.
Reading the source, I'm not sure
aeolus_plugin/Source/aeolus/engine.cpp
Line 884 in abe962f
Kind regards
Hello! I just discovered Aeolus and I love it.
However I'm trying to use the VST3 it in music notation apps (Dorico) but when the app scans plug-ins, it is blocked by OS Security.
Usually I can open System Preferences / Security and then click "open anyway". That option is given, but it doesn't work.
I have tried with older versions of Aeolus.vst3. No luck.
I have also tried following these instructions (from the Dorico team). No luck.
In a Terminal window, type:
sudo xattr -d com.apple.quarantine
followed by a space. Don’t press Return!
Then drag the plug-in onto the Terminal window. Now press Return.
You will asked to type in your admin user password.
Also worth noting that my older MacBook Pro (2014) running Big Sur could not open Aeolus Standalone 0.2.0 but does open earlier versions.
Thank you for your help with this!
Hi, I hope you don't mind, I just found this after a long search for a port of Aeolus for Mac, then today, this popped up. Thank you :)
I checked out the original aeolus page and noticed the build was 0.10.4 and the latest stop libraries had been updated. Is this build based on this latest build or an older build? if it's older, could it be updated please?
All the best.
Lew
Hi!
I'd like to package aelous_plugin for Linux distros, but it requires a license for code. Do you have any plans/thoughts about that?
Is it possible to build this plugin on linux?
Many thanks!
I have a new idea for the sequencer:
Instead of defining individual keys for each sequencer step, wouldn't it be possible to display the current sequencer memory in one place only? On the left and right there would then be buttons for > and < (or +1, -1) as well as >> and << (or +10, -10) for 10 steps forwards and backwards, and perhaps even <<< or <<< or (+100 and -100). This would allow you to control 999 sequencer steps without taking up additional space on the UI (other like single buttons).
To save the current sequencer, just press "SET" and e.g. >. The current setting is then saved on the current step plus 1.
I know that the program is mainly intended as a plug-in for a DAW. But as a standalone (as I use it) the scenario outlined would be brilliant.
Sorry to keep bothering you with changes!
I'm unclear on how to set/change the registration during a MIDI playback. I use Cakewalk, but can't seem to get it to recognize any Program change event.
It is probable that I'm doing it incorrectly. I've attempted to use the Bank/Patch change dropdowns on one of the MIDI controller tracks (I have each manual controlled by a separate MIDI track), and I've tried sending a value via CC0 -- neither seems to work.
Perhaps it would help if there's more clear documentation on how to perform registration changes during playback? Ideally, we should be able to toggle each individual stop in real-time, but I'll take just being able to choose between the 16 registration changes.
Hello,
missing a suitable electronic instrument for rehearsal, I'd like to use Aeolus (standalone on Mac) with 1/6 comma meantone temperament instead of 1/4 comma as implemented.
I took data from https://www.huygens-fokker.org/docs/scalesdir.txt, converted meansixth.scl into the frequency ratio format aeolus uses (and double checked meanquar.scl to fit the existing MeanQuart).
Attached is a untested patch to scale.cpp.
I don't know how exactly to build an extended version on Mac M1. Instructions somewhere? Could you build it for me (as I try to test as soon as possible).
Regarding temperament: Base is C fixed. It would be nice to be able to change that for non-equal temperament (my instrument has only 1/4 comma for meantone, but allows any semintone as base). Should be not too complicated to implement.
More extensive feature would be adding temperament definitions from e.g. files.
Thanks for your work on Aeolus, regards,
Lutz
aeolus_MeanSixth.patch
Hi Archie,
Great work you are doing. I appreciate it a lot. Thanks for your intensive work!
Let me raise some issues:
Thanks a lot and kind regards
Synthematophon 8
Organ music in different regions and time periods was (is) usually played with different pitch standards and temperaments. It would be nice to make them tweakable in the plugin. By the way, thank you very much for this amazing project!
I'm not very good on organs. Could you explain what does name in red mean as to registers?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.