RustyPipes Open Source VPO Software

02.12.2025 14:22
#1
avatar

Hallo, ich hoffe es ist ok wenn ich hier ein neues VPO-Projekt vorstelle!





RustyPipes ist eine virtuelle Pfeiffenorgel welche GrandOrgue und Hauptwerk Samplesets laden kann. Es wird sowohl Sample Precaching als auch Sample Streaming von SSDs unterstützt. Das erlaubt z.b. das Spielen von großen Samplesets mit vielen Registern mit wenigen Gigabytes RAM. Um nicht unnötig Latenz beim Spielen zu erhöhen werden bei allen Samples die ersten Millisekunden ins RAM geladen und dann der Rest von der Disk gestreamed. Wer das nicht will kann natürlich alle Samples komplett ins RAM laden.

Ein paar Features:

  • Sample Streaming und Sample Precaching
  • Convolution Reverb
  • MIDI Input Support
  • MIDI Datei Playback
  • MIDI Kanalmappings mit Presets
  • GUI und Textmodus UI (TUI)
  • 32-bit interner Audiomischer
  • Automatisches Resampling
  • 24-bit und 16-bit sample support
  • "Original tuning" Modus für authentisches Klangbild


Was fehlt bzw. ist (noch) nicht implementiert:
Geteilte Manuale, Koppeln - Stattdessen kann man aber MIDI-Kanalzuordnungen als Presets speichernd und aktivieren.
Digitales Tremolo
Traktor bzw. Windwerk Geräusche

RustyPipes ist ein komplett neues, in Rust implementiertes Projekt. Es ist gratis und Open Source unter der GPLv2. Der Hauptwerk-Support ist noch ein bisschen eine Baustelle. Binaries gibt es für Linux, OSX und Windows.

Download:
https://github.com/dividebysandwich/rusty-pipes/releases

Ein paar Soundbeispiele:
https://playspoon.com/files/RustyPipes-B...nor-BWV548.flac
https://playspoon.com/files/RustyPipes-V...o2-Allegro.flac
https://playspoon.com/files/RustyPipes-V...-Cantabile.flac


 Antworten

 Beitrag melden
02.12.2025 17:03
#2
avatar

Das sieht nach einem interessanten Projekt aus! Vielen Dank für den Hinweis!
Zu den Hauptwerksamplesets: Unterstützt du auch (unverschlüsselte) Sets, die Hauptwerkversionen größer 4.2 benötigen?


 Antworten

 Beitrag melden
02.12.2025 23:00
#3
avatar

Mit ziemlicher Sicherheit nicht - ich bin auch erst noch dabei mich durch einige Demo-Sets durchzuarbeiten und zu schauen wo es raucht. Hauptwerk ist aber auch generell ein schwieriger Kandidat, das XML Schema ist über viele Jahre gewachsen und das merkt man... Jede Menge Magic Numbers und teils verschiedene Wege das gleiche Ziel zu erreichen. Ich kann verstehen warum GrandOrgue hier einen eigenen Weg gegangen ist.


 Antworten

 Beitrag melden
03.12.2025 22:28
#4
avatar

Sieht interessant aus! Kann man auch mehr als ein Midi Gerät nutzen, Keyboard1, Keyboard2 und Pedal zum Beispiel?
Sehe ich es richtig das noch keine Manipulation des Klangs stattfindet wie z.B durch ein Windmodell? Die Demos, stammen die von Piotr Grabowski's Friesach? Hätte ich tatsächlich nicht erkannt im Vergleich zu GrandOrgue, aber es klingt nicht unbedingt schlecht.


 Antworten

 Beitrag melden
04.12.2025 10:30 (zuletzt bearbeitet: 04.12.2025 11:20)
#5
avatar

Aktuell wird nur ein MIDI Input unterstützt, die Manuale sollte man auf MIDI Kanäle verteilen, also Manual 1 auf Channel 1, Manual 2 auf Channel 2, Pedal auf Channel 3, etc.
Ich bin mir auch nicht ganz sicher wie man mehrere MIDI devices hier sinnvoll einbinden kann, schliesslich basiert alles auf MIDI Channels.
Nein es gibt noch kein Windmodell, dazu bin ich noch nicht gekommen. Auch Tremulant fehlt noch.

Richtig, die Demos sind Friesach. Kann auch an meiner laienhaften Registrierung liegen ;)

BTW es gibt jetzt Version 1.0.2 mit verbessertem Hauptwerk support. Falls jemand ein Sampleset >v4.2 hat welches frei verfügbar ist, ich bin für Hinweise dankbar.


 Antworten

 Beitrag melden
04.12.2025 12:01
#6
avatar

Zitat von Dividebysandwich im Beitrag #5
Ich bin mir auch nicht ganz sicher wie man mehrere MIDI devices hier sinnvoll einbinden kann, schliesslich basiert alles auf MIDI Channels.

Organteq könnte da vielleicht eine Vorlage sein. Bei den Einstellungen kannst du auswählen welche Midi Geräte Inputs sind und zusätzlich kannst du sagen dein Keyboard 1 welches Midi Kanal 1 nutzt wird zu Kanal 2 umgeroutet.

Übrigens läuft das Programm nicht auf Distributionen wie Debian 12, wegen libc6. Denke dort doch einmal über ein AppImage wie bei GrabndOrgue nach, oder noch besser ein Flatpak. Mit einem Flatpak erreichst du auch noch viel mehr. Ich werde das ganze im Blick behalten und wenn ich irgendwann das Update meines System mache mal live antesten. Der Code sieht übrigens so wie ich das beurteilen kann gut und sauber aus.


 Antworten

 Beitrag melden
04.12.2025 20:44
#7
avatar

Es gibt wieder Neues: RustyPipes v1.0.3 hat jetzt auch Tremulant und versteht prinzipiell Windchests, zumindest bei GrandOrgue sets. Beim Tremulant bin ich auf Feedback angewiesen ob das so passt oder ob Pitch oder Amplitudenmodulation zu heftig sind.

Download: https://github.com/dividebysandwich/rust...ases/tag/v1.0.3

Zitat von Untersatz32 im Beitrag #6

Organteq könnte da vielleicht eine Vorlage sein. Bei den Einstellungen kannst du auswählen welche Midi Geräte Inputs sind und zusätzlich kannst du sagen dein Keyboard 1 welches Midi Kanal 1 nutzt wird zu Kanal 2 umgeroutet.


Keine schlechte Idee! Sollte kein großes Problem sein, ich muss mir nur überlegen wie ich das im UI mache, ohne jetzt direkt ein anderes Programm zu kopieren. Ich kann z.b. pro MIDI Device eine Zeile machen in der man einstellen kann welcher MIDI Kanal auf welchen internen Kanal geroutet wird... oder ich mache 16 Zeilen für die 16 internen Kanäle und pro Zeile kann man Device und MIDI Kanal einstellen.

Zitat von Untersatz32 im Beitrag #6
Übrigens läuft das Programm nicht auf Distributionen wie Debian 12, wegen libc6. Denke dort doch einmal über ein AppImage wie bei GrabndOrgue nach, oder noch besser ein Flatpak. Mit einem Flatpak erreichst du auch noch viel mehr. Ich werde das ganze im Blick behalten und wenn ich irgendwann das Update meines System mache mal live antesten. Der Code sieht übrigens so wie ich das beurteilen kann gut und sauber aus.


Uff, Flatpak... Das hat mich jetzt mehr Zeit gekostet als das implementieren vom Tremulant ;)
Okay es gibt jetzt auch ein Flatpak zum downloaden. Ich werde das später dann auf Flathub stellen sobald das ein paar User überlebt hat.

Ich kann aber wirklich empfehlen einfach RustyPipes selber zu compilieren. Rust installieren ist ein Einzeiler (Siehe https://rustup.rs/) und dann einfach "cargo build --release" oder gleich "cargo run --release". Und das sage ich jetzt nicht nur weil ich mich auf pull requests freue - aber eben auch deswegen ;)


 Antworten

 Beitrag melden
04.12.2025 20:57
#8
avatar

Zitat von Dividebysandwich im Beitrag #5
Falls jemand ein Sampleset >v4.2 hat welches frei verfügbar ist, ich bin für Hinweise dankbar.

Ein ziemliches Dickschiff: Die Demo (Vol. 0) der Ladegast-Orgel aus Schwerin ist kostenlos verfügbar und setzt Hauptwerk VII voraus.


 Antworten

 Beitrag melden
04.12.2025 23:05
#9
avatar

Zitat von Dividebysandwich im Beitrag #7
Keine schlechte Idee! Sollte kein großes Problem sein, ich muss mir nur überlegen wie ich das im UI mache, ohne jetzt direkt ein anderes Programm zu kopieren.


Bei Organteq sieht es so aus:
Bild entfernt (keine Rechte)

Finde ich persönlich praktisch. Einen andere Idee wäre die Midi Eingänge in einer Liste auszuwählen und in der Ansicht der Werke für jedes Werk dann den Kanal zu wählen auf welchem es reagieren soll. Beispiel hier aus Aeolus (https://archie3d.github.io/aeolus_plugin/)
Bild entfernt (keine Rechte)


 Antworten

 Beitrag melden
05.12.2025 13:59
#10
avatar

Danke für den Tip bez. Hauptwerk v7!
...aber... was geht denn dort ab?

1
2
3
4
5
6
 
<o><a>11057</a><c>2730</c><g>200</g><i>140</i><b>NonPhoto 1 terzflote 3 1/5</b></o>
<o><a>12094</a><c>2730</c><g>250</g><i>212</i><b>DrStop2 2 octave 2</b></o>
<o><a>15013</a><c>2730</c><g>180</g><i>212</i><b>AltDrstop p cello 8 (stark)</b></o>
<o><a>12004</a><c>2730</c><g>250</g><i>212</i><b>DrStop2 3 piffero 4</b></o>
<o><a>12041</a><c>2730</c><g>250</g><i>212</i><b>DrStop2 p copp. I</b></o>
<o><a>16068</a><c>2730</c><g>200</g><i>139</i><b>NonPhoto2 1 flmajor 8</b></o>
 



Fast alle XML Elemente haben nur noch 1 Buchstaben. Wenn das ein Versuch ist das XML etwas kleiner zu machen... warum dann nicht einfach JSON oder gleich Protobuf, Bincode oder dergleichen verwenden? Sehr seltsam.


So, jedenfalls gibt es jetzt RustyPipes v1.0.4 [Download] mit folgenden Features:

* Hauptwerk v7 Kompatibilität (WIP)
* Mehrere MIDI Devices werden unterstützt
* Demo-Samplesets mit leeren WAV Dateien führen nicht mehr zum Abbruch

Man kann jetzt einfach mehrere Devices anwählen:



Pro Input-Device kann man jetzt entweder alles auf einen virtuellen MIDI-Kanal in RustyPipes mappen...



...oder bei Bedarf auch ganz genau definieren wohin welcher MIDI Kanal des jeweiligen Geräts geroutet werden soll:




Der Hauptwerk Support ist immer noch in den Kinderschuhen, ich muss mir noch was überlegen um zwischen den Perspektiven umzuschalten. Vorerst nimmt er sich eine einzige Perspektive, mit Vorliebe was mit "direkt" oder dergleichen im Namen. Aber die Schwerin-Demo funktioniert soweit schon mal und braucht mit den default-settings nur 13GB RAM. Wem das zu viel ist der kann die "Preload Frames" kleiner drehen.


 Antworten

 Beitrag melden
Heute 00:13 (zuletzt bearbeitet: Heute 00:16)
#11
avatar

Ich habe jetzt einmal das Flatpak getestet mit der Niederzwehren (Kassel) https://binauralpipes.com/niederzwehren erschwerend kam für das Programm hinzu, dass ich ein Testsystem von alter 2.5" usb hdd genutzt habe. Aber es ging erstaunlich gut.

Soweit war alles intuitiv und der Klang geht in Ordnung. Bei spielen selbst hatte ich ein Knacken, dieses ist auf der Aufnahme die ich mit Tenacity/Audacity gmeacht habe aber nicht zu hören... Die Orgel klingt eigentlich wie gewohnt, einige Töne weichen aber doch etwas vom gewohnten Klang ab, aber nicht im negativen Sinne. Auch ohne IR scheint noch ein zusätzlicher Hall dabei zu sein, kann das sein?

Was mir so durch den Kopf ging bei meinem verwendeten Set:
- Geräusche für Tasten/Traktur einzelne Register?
- Bei den Namen fehlt die Angabe 16", 8" etc.
- Verdammt, es funktioniert ja wirklich
- Wäre schön wenn man die Einträge der Register bearbeiten könnte und in einer zum Programm passenden json speichern kann.

Später wäre es aber wirklich wichtig ähnlich zu anderen Programmen die Register mit Midi ein/aus schalten zu können (Lernfunktion) sowie eine Aufnahmefunktion. Aber Stand jetzt eine beeindruckende Leistung von dir. Ich hoffe es geht weiter.

EDIT Ich würde auf Grafiken verzichten. Für jedes Werk die Register in einer Liste und fertig, in der Praxis nutzen die meisten wohl bei Touchscreens ohnehin die Simplen Buttonansichten. Sweelinq bietet schon keine andere Methode an.

Ich habe einmal das Ergebnis als Audio angehängt.

Dateianhänge
  • {[norights]}

 Antworten

 Beitrag melden
Bereits Mitglied?
Jetzt anmelden!
Mitglied werden?
Jetzt registrieren!