Add blog post

This commit is contained in:
this.ven 2024-11-28 20:46:22 +01:00
parent 3ba51817f7
commit c77a31e298
2 changed files with 154 additions and 0 deletions

View file

@ -0,0 +1,151 @@
---
title: 'Further technical hurdles'
date: 2024-11-28T17:50:34+01:00
authors:
- name: this.ven
link: /about/
image: /images/profile.jpg
tags:
- Drums
- ProAudio
- Mapping
- Scorewriting
---
'I do this not because it is easy, but because I thought it would be easy.' It seems like there's still a lot to do before I can actually start recording. The legacy of the scorewriting workflow I got used to now comes back at me. So I need to learn new tools, adapt to new formats, and find a new workflow. However, I can do this because I want to do this. And one thing I know is: Going the hard way leads to many insights.
<!--more-->
## Scoring with a drum machine
In my [last blog post](/blog/reinventing-the-zeal-without-starting-from-scratch/) I wrote about how I got used to save my ideas with a tablature editor and happened to compose and arrange with it. But that's only half the story. Since the drums of a soundfont quickly sounded not vivid enough for me and I was curious to try out other free software, I started scoring drums with [Hydrogen](http://hydrogen-music.org/), the advanced drum machine.
Using the integrated Sound Library[^1] the drumkit *Flac_GSCW-2*, which is based on samples from Salvador Pelaez[^2], appealed to me. Hydrogen provides a lot of options to fine tune the sound of a drumkit. However, I have basically used it to better imagine the sound of the drums in my arrangements. And I ended up drictly feeding single instrument tracks, such as the kick, snare, etc., into separate tracks in Ardour in the recording step to do the fine tuning in the DAW bypassing all the advanced options of Hydrogen.
## Exporting a Hydrogen Song to MIDI
My drums scores are currently saved in Hydrogen's XML[^3] format and bound to the drumkits provided by Hydrogen. In order to work with the Tchimera Drum Kit, as described in the [#Drums](/docs/computer/pro-audio/#drums) section of my pro audio documentation, I export the Hydrogen song (`.h2song`) to MIDI.
{{< figure src="/blog/img/hydrogen-export-midi.png" alt="Hydrogen MIDI export" caption="Exporting a song in Hydrogen to MIDI" >}}
However, importing the resulting `.mid` file into an Ardour MIDI track—which has been initialized with an *sfizz-multi* instance loading the `full_kit.sfz` of the Tchimera Drum Kit virtual instrument—doesn't do the magic. While listening to the MIDI notes triggering the samples in sfizz I note that a crash cymbal is triggered instead of a low or floor tom, for example.
The reason is that the mapping of MIDI notes for the Flac-GSCW-2 drumkit in Hydrogen is different to the mapping of the Tchimera Drum Kit provided as SFZ file. The value in the *Note* field of the *MIDI Output* control bar on the lower right side of the image above reveals that the Snare instrument is mapped to note `37`, for example.
### Flac_GSWC-2 default mapping
First, I write down the notes used in the Hydrogen drumkit Flac_GSCW-2. The following table shows the mappings and the General MIDI (GM) standard for reference:
Note | GM[^4] | Flac_GSCW-2
-----|---------------------------|-----------------
36 | Electric Bass Drum | Kick
37 | Side Stick | Snare
38 | Acoustic Snare | Snare flam
39 | Hand Clap | Snare side stick
40 | Electric Snare or Rimshot | Snare roll
41 | Low Floor Tom | Snare rim shot
42 | Closed Hi-hat | Snare drag
43 | High Floor Tom | Crash 14"
44 | Pedal Hi-hat | Crash 14" choke
45 | Low Tom | Crash 18"
46 | Open Hi-hat | Crash 18" choke
47 | Low-Mid Tom | Tom 13"
48 | High-Mid Tom | Tom 12"
49 | Crash-Cymbal 1 | Ride 22" - bell
50 | High Tom | Tom 10"
51 | Ride Cymbal 1 | Ride 22"
52 | Chinese Cymbal | HH closed
53 | Ride Bell | Tom 12" flam
54 | Tambourine | HH open
55 | Splash Cymbal | Tom 10" flam
56 | Cowbell | HH pedal
57 | Crash Cymbal 2 | Tom 13" flam
58 | Vibraslap | Splash 6"
At first glance, this mapping appears to have been made in sequence accounting for instruments to be triggered on notes you wouldn't expect, if you are already familiar with the GM standard.
### Tchimera Drum Kit default mapping
Next, I investigate the [keymap.sfz](https://github.com/michaelwillis/tchimera-drum-kit/blob/master/keymap.sfz) file containing the mapping of the Tchimera Drum Kit as shown in this table:
Note | GM and GS[^5] | Tchimera Drum Kit
-----|---------------------------|------------------
22 | | HIHAT_CLOSED_EDGE
23 | | HIHAT_HALF_BOW
24 | | HIHAT_HALF_EDGE
26 | Finger Snap (GS) | HIHAT_OPEN_EDGE
30 | Scratch Pull (GS) | TRASH_BOW
31 | Sticks (GS) | TOM_4
32 | Square Click (GS) | TRASH_EDGE
33 | Metronome Click (GS) | TOM_4_RIM
35 | Acoustic Bass Drum | KICK_FREE
36 | Electric Bass Drum | KICK_DAMP
38 | Acoustic Snare | SNARE_CENTER
39 | Hand Clap | SNARE_EDGE
40 | Electric Snare or Rimshot | SNARE_RIM
41 | Low Floor Tom | TOM_3
42 | Closed Hi-hat | HIHAT_CLOSED_BOW
43 | High Floor Tom | TOM_3_RIM
44 | Pedal Hi-hat | HIHAT_PEDAL
45 | Low Tom | TOM_2
46 | Open Hi-hat | HIHAT_OPEN_BOW
47 | Low-Mid Tom | TOM_2_RIM
48 | High-Mid Tom | TOM_1
49 | Crash-Cymbal 1 | CRASH_1_BOW
50 | High Tom | TOM_1_RIM
51 | Ride Cymbal 1 | RIDE_BOW
52 | Chinese Cymbal | CRASH_2_EDGE
53 | Ride Bell | RIDE_BELL
55 | Splash Cymbal | CRASH_1_EDGE
57 | Crash Cymbal 2 | CRASH_2_BOW
58 | Vibraslap | RIDE_EDGE
In addition to General MIDI, the mapping expands down to note `22` including notes that are part of the General Sound or General Standard (GS) superset and even non-percussion notes (notes below `26`). And compared to GM and GS the mapping in the Tchimera Drum Kit appears to be rather less systematic. The reason is that the notes correspond to those used in typical e-drums hardware made by Alesis, Roland, and Simmons.
E-drums often provide different trigger zones to simulate different sounds produced by hitting a drum or cymbal at the bow or edge, for example. For this reason, there are six mappings for hihat sounds and three mappings for the snare. Though this doesn't comply with the GM and GS standards it's a good practice to not spread the notes across the whole spectrum.
### Remapping in Hydrogen
The tables reveal that Flac_GSCW-2 and Tchimera Drum Kit are different drumkits providing different samples using different MIDI notes and a one-to-one match isn't possible. However, to generate a MIDI export that triggers most of the instruments just fine (kick, snare, hihat, toms, cymbals), I can remap the notes used in Hydrogen to similar instruments of the Tchimera Drum Kit before exporting the song:
Note | GM and GS | Tchimera Drum Kit | Flac_GSCW-2
-----|---------------------------|-------------------|-----------------
22 | | HIHAT_CLOSED_EDGE | HH closed
26 | Finger Snap (GS) | HIHAT_OPEN_EDGE | HH open
36 | Electric Bass Drum | KICK_DAMP | Kick
38 | Acoustic Snare | SNARE_CENTER | Snare
40 | Electric Snare or Rimshot | SNARE_RIM | Snare rim shot
41 | Low Floor Tom | TOM_3 | Tom 13"
44 | Pedal Hi-hat | HIHAT_PEDAL | HH pedal
45 | Low Tom | TOM_2 | Tom 12"
48 | High-Mid Tom | TOM_1 | Tom 10"
51 | Ride Cymbal 1 | RIDE_BOW | Ride 22"
52 | Chinese Cymbal | CRASH_2_EDGE | Crash 18"
53 | Ride Bell | RIDE_BELL | Ride 22" - bell
55 | Splash Cymbal | CRASH_1_EDGE | Crash 14"
Additional instruments in Hydrogen, such as Snare flam, Snare roll, Crash 14" choke, Splash 6" etc., are mapped to a range of notes unused in the Tchimera Drum Kit (`60` to `69`):
Note | GM | Flac_GSCW-2
-----|-----------------|-----------------
60 | Low Bongo | Snare flam
61 | High Bongo | Snare side stick
62 | Mute High Conga | Snare roll
63 | Open High Conga | Snare drag
64 | Low Conga | Crash 14" choke
65 | High Timbale | Crash 18" choke
66 | Low Timbale | Tom 10" flam
68 | Low Agogô | Tom 12" flam
67 | High Agogô | Tom 13" flam
69 | Cabasa | Splash 6"
## Motivation
This way I can maintain the note information (length, timing, velocity etc.) and decide to drag the note to another note for triggering another instrument while [working with MIDI in Ardour](https://manual.ardour.org/working-with-midi/add-new-notes/) or find other ways to produce the sound I intended. The additional instruments cannot occupy the same note as the regular Snare, for example. Otherwise, they would be discarded as a duplicate note on export.
Although it will take some time to get used to the features of the Tchimera Drum Kit and a lot of work will be required to find ways to maintain the intended sound of the drums I composed using Flac-GSCW-2 in Hydrogen, I am confident that I can tackle Dozen Lessons for Educationists well, soon.
[^1]: Chapter 10. [Sound Library](http://hydrogen-music.org/documentation/manual/manual_en_chunked/ch10.html) in the Hydrogen documentation
[^2]: A [drum-samples](https://github.com/gregharvey/drum-samples) repository providing the source samples
[^3]: Chapter 21. [Used File Types](http://hydrogen-music.org/documentation/manual/manual_en_chunked/ch21.html) in the Hydrogen documentation
[^4]: Parameter interpretation for General MIDI (GM) [Percussion](https://en.wikipedia.org/wiki/General_MIDI#Percussion) in the Wikipedia
[^5]: [Additional percussion notes](https://en.wikipedia.org/wiki/Roland_GS#Additional_percussion_notes) for General Standard (GS) in the Wikipedia

BIN
content/blog/img/hydrogen-export-midi.png (Stored with Git LFS) Normal file

Binary file not shown.