UNPKG

arch-wiki-md-repo

Version:

All arch-wiki articles in markdown format, updated every two days.

135 lines (90 loc) 5.69 kB
This how-to assumes that you are using [ALSA](/index.php/ALSA "ALSA") and that your sound card is set up so you can listen to music. Known to work using this how-to is the Evolution MK-631 USB midi keyboard with SB Live! Value card. Execute these instructions as an unprivileged user unless otherwise noted. ## Contents * [1 Preliminary Testing](#Preliminary_Testing) * [1.1 ALSA](#ALSA) * [2 Plugging the keyboard](#Plugging_the_keyboard) * [3 Verifying Events](#Verifying_Events) * [4 Playing](#Playing) * [4.1 Hardware synthesizer](#Hardware_synthesizer) * [4.2 Software synthesizer](#Software_synthesizer) * [4.2.1 Qsynth](#Qsynth) * [4.2.2 Qsynth using JACK](#Qsynth_using_JACK) ## Preliminary Testing ### ALSA [Install](/index.php/Install "Install") the [alsa-utils](https://www.archlinux.org/packages/?name=alsa-utils) package. Type `aseqdump`. It should output something like: ``` Waiting for data at port 128:0\. Press Ctrl+C to end. Source_ Event_________________ Ch _Data__ ``` Not much will show up there, so press Ctrl+C to quit the program. ## Plugging the keyboard Now plug the keyboard in and turn it on. The keyboard should power up. Output of `lsusb` should contain: ``` Bus 002 Device 002: ID 0a4d:00a0 Evolution Electronics, Ltd ``` Output of `lsmod | grep usb` should contain the following modules: ``` usb_midi 25348 0 snd_usb_audio 70592 0 snd_usb_lib 16640 1 snd_usb_audio ``` Now type `aconnect -i` to list all MIDI input ports. The output should contain: ``` client 72: 'MK-361 USB MIDI keyboard' [type=kernel] 0 'MK-361 USB MIDI keyboard MIDI 1' ``` The client number is probably going to be different though. Take note of it. ## Verifying Events Type `aseqdump -p ##` where you should replace `##` with the client number of your keyboard. You should see: ``` 72:0 Active Sensing ``` popping out all the time. Pressing a key should produce: ``` 72:0 Note on 0 65 94 72:0 Note on 0 65 0 ``` Various other events (turning control knobs, changing channels, etc.) should register in the list. This is a handy way of ensuring that your keyboard is running properly. To send MIDI events back to the keyboard or another MIDI output device, you can use run `aplaymidi -p ## midifile.mid` and specify a MIDI file. ## Playing To hear a sound when you push a button on your keyboard, you need a synthesizer that converts the MIDI signal into audio. Some soundcards have a built-in hardware synthesizer, but these are not common in modern sound cards, especially not in onboard sound cards. An easier option is a software synthesizer, which is just a program which you can load with you own instrument samples. ### Hardware synthesizer Type `aconnect -o` to list all MIDI output ports. It depends a lot on your sound card. On SB Live! Value, you get the following output: ``` client 64: 'EMU10K1 MPU-401 (UART)' [type=kernel] 0 'EMU10K1 MPU-401 (UART)' client 65: 'Emu10k1 WaveTable' [type=kernel] 0 'Emu10k1 Port 0 ' 1 'Emu10k1 Port 1 ' 2 'Emu10k1 Port 2 ' 3 'Emu10k1 Port 3 ' ``` Here client 65 is the actual MIDI synthesizer. Assuming the soundcard is [set up](/index.php/SB_Live!_Midi "SB Live! Midi") properly, you should be able to **route** the output of the keyboard to the MIDI synthesizer. Assuming *out* is the output client number (65 in our example) and *in* is the input client number (72 in our example), type `aconnect *in* *out*`. Now you can play your keyboard via the MIDI output of your sound card. ### Software synthesizer #### Qsynth 1. Install [qsynth](https://www.archlinux.org/packages/?name=qsynth). 2. Start QSynth and go to **Setup**, where you need to load soundfont in SF2 format. You can get free SoundFonts from [fluidplug-git](https://aur.archlinux.org/packages/fluidplug-git/), or from [http://soundfonts.narod.ru/](http://soundfonts.narod.ru/) (in Russian). When QSynth asks you to restart the engine after loading the SoundFont, do so. 3. Type `aconnect -o` to list all MIDI output ports. Find the one that contains `FLUID Synth` and note the client number. 4. Type `aconnect -i` to list all MIDI input ports. Note the Keyboard client number. 5. Assuming *out* is the output client number and *in* is the input client number (72 in our example), type `aconnect *in* *out*`. Now you can play your keyboard and QSynth should produce sounds. **Note:** You need to run `aconnect *in* *out*` each time you restart Qsynth or change the instrument/SoundFont. **Note:** Qsynth default audio driver is set to jack. To use alsa run : qsynth -a alsa #### Qsynth using JACK 1. We need to install [qsynth](https://www.archlinux.org/packages/?name=qsynth), [jack](/index.php/Jack "Jack"), [qjackctl](https://www.archlinux.org/packages/?name=qjackctl) 2. Launch qjackctl and check the settings: ``` Server Path: jackd Driver: alsa Realtime=enable; Priority:0 Frames/Period:512 Soft Mode=enable; Periods/Buffer:2 Rest of parameters=disable(by default) Dither: None Audio: Duplex ``` 1. Start jackd using qjackctl (the **Play** button) 2. Connect your USB keyboard 3. Start QSynth and go to **Setup**, where you need to load soundfont in SF2 format. You can get free SoundFonts from [http://soundfonts.narod.ru/](http://soundfonts.narod.ru/) (in Russian). When QSynth asks you to restart the engine after loading the SoundFont, do so. 4. Go to qjackctl, click **Connect** and choose the ALSA tab. On the left side you will see connected MIDI keyboard, on the left side - QSynth. Choose MIDI keyboard and QSynth, and click **Connect**.