Qsynth Windows

2 views
Skip to first unread message

Melia Hazinski

unread,
Aug 3, 2024, 5:37:50 PM8/3/24
to libacklumi

i don't think any version of qsynth has ever worked under win98 due to fluidsynth's requirement for newer glib versions. it's possible to strip out glib from fluidsynth, but you can also substitute older win98 friendly glib versions for 1.x.x versions of libfluidsynth.dll. i found this out when i compiled my own win98 compatible dosbox ece build (with fluidsynth patch) from this post here: Re: DOSBox ECE (for Windows & Linux)

so if you install the qsynth-0.3.6-setup.exe binary still available on sourceforge ( ) that will give you a v1.1.3 libfluidsynth.dll. simply replace the libglib, libgthread dll libraries plus add the renamed v1.9.2-1 iconv.dll in the qsynth program files folder and you will have a fully functional qsynth environment under win98 (and probably later versions of win95). just add midi yoke and you are off to the races.

The keyboard works fine connected to a Windows machine running Sekaiju. So it is sending CCs.
Sometimes if I start my linux setup fresh in the correct order Qsynth, Rosegarden etc
and then very quickly start playing at the Prokeys it will play correctly through speakers and then suddenly stop.
Playing period (if it works at all) is about 10-30 seconds before it shuts off.

I revisited it to see when I last had it working, as I had a problem just playing midi files today. I had forgotten about the prob with Rosegarden starting jackd (not required by us). I had noticed that Qsynth has been updated about seven times by Packman since the beginning of March! That may not have helped your testing.

I connected my Zoom effects processor via usb, to see what 12.2 with KDE + rosegarden/qsynth/pulseaudio made of it if anything. A very long time and several openSUSE releases since I had it connected and working as an audio interface (not midi), and that was with Jack. So far KDE/Phonon detected the device and KMix has it as a playback and capture device. However I think rosegarden will need Jack (IIRC configured for duplex operation) to handle the audio side.

If we consider the output side to be completely independent of the input setup then Rosegarden works fine under PA. I have it working regularly and reliably to play MIDI files as long as jackd is not loaded. On Opensuse the output sound quality is way higher than on the Windows machine with GM synth sounds and it is much easier to manage the various soundfonts on linux.

Just wanted to add that this had a very beneficial effect on screen recordings with xvidcap.
Without these commands in place I would get about a 1 sec. offset between audio and video.
With these commands in place the sync of audio and video was much more acceptable.

So I bypassed the extender, plugged the keyboard directly into the CPU box and applied your suggestion.
The aconnect thing worked. This time I could play directly to Qsynth from the keyboard.
I loaded Rosegarden and found it would record while playing through speakers.
Problem solved.

Last thing to check was whether the system would need the aconnect command each time, so I rebooted, started Qsynth and then Rosegarden, and the keyboard started playing immediately.
As far as I can tell it is Rosegarden that takes care of the aconnect instruction, and as long as that darned USB connector is not in the way it does so effectively.

I've been using Ubuntu since 2006, but even after 13 years I still dualboot with Windows. There's still a few things that keep me from goingLinux-only. Mostly that's games, but there's a few other things that Linux unfortunately does not excel at. One of those things is anything relatedto music and sound.

I have an M-Audio Keystation Mini32 that I like to use for, well, simplyplaying some notes. On windows, it's pretty much plug-and-play. On Linux,that's not quite the same experience, tho it was less cumbersome than Iinitially thought it would be.

Qsynth is a GUI wrapper around the fluidsynth software synthesizer.This will be the application that actually converts MIDI signals toaudible sound. You will need at least one soundfont file to be ableto hear anything. Thankfully, the qsynth package on Ubuntu comeswith the fluid-sountfont-gm package which provides a soundfont file.

Jackd is where things get hairy.Jack is an 'audio connection kit', that allows applications to connectsound streams to other applications. It comes with a server, jackd,that performs all the routing between applications (which then functionas jack clients).

Stay in the the "advanced" tab, while opening a terminal. By default,jackd is assuming your output device lives on card 2, with subdevice 0.This isn't always the case, and in my case, actually changes at eachreboot. Unfortunately this means I may have to re-configure jackd ateach reboot.

Which device you are looking for depends on your situation. If you have connected your PC to a TV, it's going to be one of the HDMIdevices. If you used the headphone jack, it's going to be the Analogdevice. In any case, the format is going to be hw:card,subdevice.

If, at this stage, you get an error stating Cannot write socket fd = x err = broken pipe,that means your setup uses the wrong output device. It may be a bit of trialand error figuring out which output device you need.

Now, we are almost done configuring things. We now need to go backto qjackctl. Now, hit connect. Go to the Alsa tab - strangly not the Midi tab. You'll see your midi device listed on the left side, and qsynth listed on the right side. You'll want to connect both. Select both, then hit the connect button, and a line connecting your midi device to qsynth should show up.

This is due to jackd not working nicely with pulseadio. Pulseadio is the sound server that practically all other applicationsuse. While jackd is active, applications using pulseadio will notproduce any audio.

For one, I don't understand why pulseaudio-module-jack doesn't come asat least a recommended package when installing jackd. It seems to me that running jackd and pulseaudio at the same time on a modern Linux desktop is a very logical thing to do. It would be even greater if jackd would comepreconfigured with pulseaudio working out of the box.

While playing instruments, we usually want our latency to be as low as possible.To get the lowest latency possible, you should grant realtime priority to jack (or actually, you should use a realtime kernel as well). Doing so, however, means youhave to configure your user to be able to grant realtime priority.

playing midi on windows is easy; windows has a built-in synth: microsoft gswavetable synth, so you can play a midi file by opening it with windowsmedia player; it often sounds garbage, but at least you can hear something;likewise, you can plug in a midi keyboard and start a foolproof e-pianosoftware, bam, your music is there;

alsa stands for advanced linux sound architecture; it provides linux soundcard drivers and an api to use them; therefore, an application can make soundusing alsa library; one can think of alsa as the root of all sounds on linux;

with alsa, playing audio file is a matter of reading data from the file andsending them to alsa, which will then drive the sound card; but a midi file doesnot contain audio data; as you can imagine, we need a program to convert mididata into audio data: this is called a synth;

FluidR3_GM.sf2 is a soundfont file; a soundfont is basically a bank of soundsarranged by midi notes; this specific soundfont comes from fluidsynth itself; ifyou dont like those sounds, you can search online and try another one;

in the above example, we were using alsa_raw as the midi driver to get inputfrom the midi keyboard; we need to specify the keyboard address when startingthe synth so that it knows where to fetch midi data; this static configurationis inflexible: what if we have multiple midi keyboards? what if midi keyboardscome and go?

alsa sequencer comes to solve this problem; it can send midievents between clients; this helps build a midi patch-bay; it features asubscription model so that multiple clients can send data to the sameapplication at the same time, and the routing can be changed dynamically;

as you can see, alsa sequencer supports dynamic configuration very well; in theabove example we were routing data from a midi keyboard to a synth, but we canroute data from any sender to any receiver, such as between two applications;

jack is a sound server providing real-time, low-latency connections for audioand midi data between applications that support its api; it can use alsa as theback-end for hardware communication, and therefore sits at a higher level thanalsa in the linux audio stack;

since jack can route both audio and midi data, there are jack-audio andjack-midi; jack-midi and alsa sequencer do similar jobs, but jack-midi hasbetter timing and can often be used as replacement for alsa sequencer;

this is the default option when you dont add -X in the command line;in this case jack doesnt use alsa midi devices; this means you cantconnect to physical midi ports and cant route data to or from them;

this script starts a fluidsynth instance exposing alsa sequencer midi ports; wethen try to connect our keyboard to this fluidsynth instance, using either jackports or alsa sequencer ports (port names and numbers may vary);

answer: because the jack midi developers have a dream where it is the normalcase for jack to exclusively control the sound system; in general, it isrecommended to grant exclusive access to the audio system to one program,minimizing interference from other similar programs; alsa sequencer is one ofthose; another example is pulseaudio; pulseaudio is actually not bad, but isnot designed for low latency audio; in fact we recommend you kill pulseaudiowhile running jack, but jack seems to be auto suspending pulseaudio already;

qjackctl arranges jack ports into clients; to route midi or audio data fromone port to another, you simply click the source port and drag it to thedestination port; by default, jack midi ports are red and jack audio portsare green; the patch-bay graph clearly shows the wiring;

c80f0f1006
Reply all
Reply to author
Forward
0 new messages