New Engine Implementation: Aeolus (Pipe Organ Emulator)

OK! Understand …
I’m thinking the best way of integrating mididings as an advanced option. Why not? :wink:

Regards,

1 Like

Hi @jerash!

I’ve a initial version of the aeolus engine. I’ve implemented the stop mechanism directly in the engine, without using mididings. The code is really simple:

	def send_controller_value(self, zctrl):
		try:
			val=zctrl.get_label2value()
			logging.debug("Sending controller '%s' value => %s" % (zctrl.symbol,val))
			if val=="on":
				mm="10"
			elif val=="off":
				mm="01"
			else:
				mm="11"
			v1="01{0}0{1:03b}".format(mm,zctrl.graph_path[0])
			v2="000{0:05b}".format(zctrl.graph_path[1])
			self.zyngui.zynmidi.set_midi_control(zctrl.midi_chan,self.stop_cc_num,int(v1,2))
			self.zyngui.zynmidi.set_midi_control(zctrl.midi_chan,self.stop_cc_num,int(v2,2))
			logging.debug("Stop Change => mm={}, group={}, button={})".format(mm,zctrl.graph_path[0],zctrl.graph_path[1]))
		except Exception as e:
			logging.debug(e)

I would like to improve it a little bit more before making a release, but i need some help from you:

1.) Does exist some way of generating and saving the Aeolus wave files without using the GUI? The only way i’ve found is clicking “save” from the GUI…

2.) The current engine’s version has the “Default Instrument” structure hardcoded in. It would be possible to parse the “definition file”, but before doing it i would like to know if people like you (a Pipe Organ Expert :wink: ) find this feature interesting and how much interesting is.

3.) Regarding the “presets”: The current engine version can send “Program Change” messages for loading presets, but the zynthian controllers doesn’t show the loaded values. Bad! For reflecting the loaded values, i need to parse the presets file, that is a binary file. It’s not specially complex because the Aeolus code is pretty straighforward and easy to understand:

Anyway, i would like to hear your opinion about it. Are aeolus “presets” really useful? Do you use it frequently? Do you have a better solution?

Kind Regards,

Hi @jofemodo

yes sure, this is really awesome that you had done the logic in the engine definition, really really nice work !

If you want me to test something on my zynthian, please send me some files to try !

From what I know there are 2 options to use :

  • on the first run (with the gui) it checks wheter the files exist, if not then it is creating them (it takes about one minute or two).
  • if the necessary files are copied in the revelant directories BEFORE aeolus is ever started, it will use those files.

I think you want the second option. Meaning that those files generated on another unit must be part of a “static package” for aeolus engine.

Also note that the default directory /usr/share/Aeolus/stops-0.3.0 must be writable but the user running aeolus for the files to be saved for next startup.

Cicking “Save” on the GUI, is only for saving presets and options from what i’ve seen.

I don’t really get what you want to achieve here ?
But I you think about modifying the instrument temperament (all the cursors in the audio option window), which would need a recalculation of the wave files, then I think it is not necessary as most users are ok with the default sound.

Yes they are usefull because when they play a song, or another they will use different stops combination.
And sometimes, with complex or long songs, they will need to change the sound while playing.
Most of these changes involve to switch on and off up to 10 switches, and is not doable while playing.

Organs which often have at minimum 2 hand keyboards + 1 foot pedal keyboard, have 6 presets for each keyboard in standard.
Here Aeolus only has “global” presets that will change the stops on all keyboards.
From what i’ve encountered with people playing in small churches, they use a maximum of 4 presets (and often none).
So this function while not absolutely necessary for beginners and small churches, is anyway necessary for the regular player.

Now if you can SAVE and RECALL presets, I think most users can deal with not having the active stops written on the LCD. In a way, the sound speaks by itself, and it is easy to write down on a paper which preset is used on which song/part.

hope this helps.

I mean that you can use a different “definition” file, with a different instrument configuration. Currently, the default instrument structure (definition) is hardcoded in the zynthian engine and for using a different instrument (definition file), the code must be modified. It could be solved by not hardcoding the instrument structure in the engine and parsing the definition file, but it’s a good amount of work and it seems that everybody is using the default instrument because it’s quite complete …

Regards,

Yes I confirm the default definition is absolutely ok.

Hi @all!

As you can see, the new Aeolus engine is on master now:

FYI, i’ve implemented a read function for the Aeolus presets file and now when you load a preset, the Zynthian UI controllers get updated nicely. Whoaoooo! :sunglasses: :rofl:

@jerash, I included some “random” presets for testing but i would like to include a decent set of presets, could you send a good “presets” file?

Enjoy!

4 Likes

this is insane, i’ll update my zynthian box to test this and report

@jofemodo is faster at work without deadline than other with it :wink:

1 Like

Hi @jofemodo,

I just got my 2nd Zynthian back from Make-Magazin and updated the software last Friday (first update since 4 month) - works!
After seeing the announcement of Aeolus I updated again. Installation procedure seems to work. Starting the engine does work also, but I cannot hear anything when playing. Hmmm… strange.

Does the update work for other users?
Perhaps I should try with a fresh image again?

Regards, Holger

1 Like

You don’t have an Audioinjector in that Zynthian? With mine I had to slide the alsamixer via webconf. …

1 Like

Ok, I think I have to start my notebook and have to look for the problem. Not working “out-of-the-box” :wink:

Regards, Holger

I’ve tried the update with a fresh SD image and it worked. Impossible to test with all infinite SD status.
Of course, the update process is very far from perfect … :disappointed_relieved:

I got it running by installing the latest ZynthianOS image and updating. I had some strange problems with the encoders (MCP23017) after using the image… I have to invest some time to check this again and pick up some debug information.

Aeolus sounds nice! Very cool!!!

Regards, Holger

Hi all,

On my Zynthian v1 worked. A fresh gorgona image and updated …twice did the trick.

Wonderful sounds! Nice work!

Thanks, Jose.

When you did, please tell me how you did that.
I can’t run zynthian.sh or webconf outside systemctl context.

Hi all.
My box wouldnt update due to github certificate problems…
So downloaded the fresh gorgona image yesterday and booted ok.
Will report next week when tested.

After double upgrade (after the first one Aeolus would not start, it looks like it was missing the static wav files which were donwloaded on the second upgrade) :

  • works like a charm :slight_smile: Thanks @jofemodo
  • nice to see you can create a single instrument with 4 layers wih each on its own channel

The presets you have made are mostly too heavy for the average organ music, but still give a great demo of the sound that you can tweak with the zynthian interface.
One exception is the FullOrgan sound, where ALL stops are activated, hear an example here : https://www.youtube.com/watch?v=nkzXqVgU1i0

I’m not an organ player myself, so I’ll try to have on real organ player make some and send them to you.
(I have an Aeolus install scheduled end of september, may be my best chance)

About saving presets, I have not find the way to save a new preset in BankX/PresetX, how to do this ?

Things that should be fixed :

  • The MIDI channels assignation of layers is disturbing (ManI is on channel 3). It would be more logic and conventional to have ManI on channel 1, ManII on channel 2, ManIII on channel 3, and Pedal on channel 4
  • when navigating from one layer to another, sometimes one layer sound is changed, as if it had recalled the preset. Not pretty sure about this, will try to replicate later (after holidays!)

See you soon

1 Like

There’s absolutely no need to worry about uploading individual notes or chords that in itself is really useful. Obviously fully proficient players are marvellous but people can appreciate so much from notes and chords and if helps us generate demo content!

OK! I’ve recreated the presets and i hope it will be more useful now. You have 2 “light presets” in bank 1 and the FullOrgan preset in the Bank 2.

Anyway, i’ve no idea about Pipe Orgamns, so i will be waiting for a good preset collection from your Organist friends :wink:

You can’t do that from the Zynthian UI. You have to open the Aeolus native UI via X-windows. Sorry, but i haven’t found a way for doing that… but you can save “snapshots” :wink:

I’ve changed the assignment following your advice. Update your zynthian and reboot …

Kind Regards!

Ahhh! I forgot to explain that Zynthian will take the MIDI channel configuration from the presets file, so you could change it using the Aeolus native UI :wink:

1 Like

OK now this is working very nice, I have another more tricky request to submit.

You have made a awesome integration of aeolus stops controls, and it is working great for what i’d call an advanced user, or a synth geek.
But the regular user would prefer the original aeolus X display.
So for now can ssh-X in the box to have a display, but tell me if the following is possible :

  • consider I don’t need the zynthian GUI except on the beginning to prepare some snapshots
  • redirecting X output to hdmi (read articles, so it is ok with fb0)
  • display the aeolus GUI on an empty openbox desktop

Is zynthian logic tweakable enough to transform it into a dedicated one plugin box with display ?