Chime Orchestra From Dining Glasses (free MIDI / SFZ Instruments Included!)

by rievezahl in Circuits > Audio

369 Views, 2 Favorites, 0 Comments

Chime Orchestra From Dining Glasses (free MIDI / SFZ Instruments Included!)

chimeOrchestraMainPic.png
Chime Orchestra from Dining Glasses (Demo for Instructable)

Hi all!

Here I will present to you a method of converting real life sound producing objects into digital Instruments, able to be played with a keyboard (MIDI controller, but even your PC's alphanumeric keyboard, for a start).

It should work on any PC - Windows/Mac/Linux (maybe not every distribution of Linux, but successfully tested on Ubuntu Studio 20.10 and 22.04).

As an example, I will show you what it takes to record samples of glassy objects gently hit to produce "bling-y" sounds and how you can process the samples and load them into Software that will reproduce them with claviature-adjusted pitch. Then you can effectively play a chime orchestra out of your dining glass drawer right on your PC! Doesn't that sound great?

You can watch the teaser video above to see examples of what you can do with this method.

Boredom warning: I tend to go into details and theory a lot. Feel free to keep skipping some parts if you're totally a hands-on person.

For the those unwilling to wait: here is access to my Chime Orchestra Instruments! You will learn how to use them further down this page.

Supplies

glaeserschrankVitrine.jpg
hittingUtensils.jpg
recDevice+Tripod.png
glaeserschrank2.jpg
  • Some delicate glassware - wine, cocktail, beer glasses or bowls...
  • ...but also cheese bells or other everyday objects like metal poles, chrome tire caps, ceramic lamp screens, circular saw blades... the list could go on and on!
  • Something to hit those objects with
  • alternatively you can try to excite the sound from sliding a wet finger over a wine glass edge.
  • Microphone(s), including mike stands (or at least something holding them in place - reliably)
  • Audio controller/recording device/sound card
  • PC
  • A room where you can do the recording
  • Low impedance headphones or a really loud amplifying headphone amp, or even better: capable studio monitor loudspeakers
  • Time. You don't need tons of it, but you shouldn't be in a hurry either.
  • Some patience to fiddle around with recording equipment and plugin host software
  • Software (all of it available for free)
  • Audacity https://www.audacityteam.org/download/ for recording, leveling and basic editing of the samples
  • VLC Media Player https://www.videolan.org/vlc/index.en_GB.html or any other decent audio file player with easy custom playlist function for screening and grouping samples
  • LMMS1.3 https://lmms.io/download or
  • GarageBand https://apps.apple.com/at/app/garageband/id6826588...
  • or any other plugin host that lets you load sfz plugins and play them via MIDI controller
  • sfz (sound font) player. I'm not convinced this is the best of them all, but this actually the only one working to satisfy official sfz requirements to the extent we need: sforzando, by Ploque https://www.plogue.com/downloads.html you find it scrolling down almost to the end - for Windows & Mac.
  • On Linux, Carla Rack plugin can directly run .sfz files, however I found mine does not cycle through the sounds of multi-sample instruments in a predictable (let alone 'as defined') way. It is preinstalled on the ubuntu studio distribution, however, giving you a quick and easy start.
  • If you're on Linux and you plan on using sfz to its full extent, you might need wine to install sforzando. Install wine on ubuntu studio like follows, detailed instructions are beyond the scope here, please drop a comment if in need of help!
       sudo apt-get install wine-stable

Maybe it's even enough to install sforzando on a windows machine, then find and copy the sforzando(x86).dll somewhere where you can find it from your Linux machine. Just make sure it's the 32bit version, if there is a choice!

*actually anything that sounds interesting might be worth a try - you can even build your own software kitchen noise drum set (or real ones) and much, much more if you manage to record suitable samples! It's limited only by your your creativity.

Rest assured you can legally use any and all of my samples provided for anything you want to do with it! I would be grateful if you show me what you did so I can appreciate ways in which my samples are used. Not an obligation, of course.

Feel free to skip directly to step 3 if you don't want to bother with too much theory! You can drop by here any time later.

The Upstream Signal Chain

upstreamSignalChain1.png

Before going into depth with the required hardware spec's, I want you to be aware of the signal chains of both, the recording ('upstream') process, as well as the playback ('downstream').

The first is kind of straight forward, but it is important to know the sound quality is subtractive. Meaning that if the quality is bad from the start, it will not improve much at later stages. On the contrary, bad components in the signal chain can deteriorate an otherwise good signal quite substantially. With good being subjective of course, I encourage you to start wherever you are and buy new things only when you are sure it's the equipment that is pulling you down.

So, we start with a glass (1) that is excited to vibrate and emit sound.

The relative position, hit angle and kind of excitation interaction (2) will determine how energy is brought into the object. It will respond trying to get rid of the energy and momentum by transferring it over to the air (create audible sound waves) and floor or wherever it is held in place.

However, a good portion of the energy will be stored in multiple resonant modes of vibration*. These vibrations constantly transfer a small share of their energy over to the air. This small share is lost from the vibration itself, thus its amplitude gets lower over time. On the other hand, the portion of energy transferred to the air is the only portion we are able to percieve with our ears. And microphones.

This is how the excited vibrational modes of the object determine the audible sound that is emitted.

Of course, you can omit air as a sound carrying medium by pressing the glass directly against your ear or microphone. Piezoelectric pickups work like this. However, high quality sound recordings usually require an air-mediated signal chain.

Air (3) recieves and propagates the sound (energy), depending on the geometry and active vibrational modes of the object, but it also interacts with the geometry and surface qualities of the room/environment.

Any competing source of noise will contaminate the sound in the air, hence finding a quiet spot to record samples can be a good use of your time!

Microphone(s) (4) capture the sound, depending on

  • where in the sound field you place them and
  • at which angle.

Of course, the

  • type of technology and
  • design / build of the mike

also play a huge role in how the sound is being transduced into an electric signal.

The audio controller (5) amplifies the electric signal and converts it to digital. Low quality analog cables and amplifiers can introduce further unwanted noise.

Leveling is a thing here. It is the art of choosing an input amplification level that is high enough to faithfully reproduce the low volume fading ring while yet avoiding clipping (transients too loud try to push the signal beyond the dynamic range --> noticable distortion)

Software editing (6) can indeed do something, but I recommend creating a "dry" to even "raw" sounding instrument first and only add (most of the) editing/effects after the fully functional instrument (plugin), hence: in the downstream process. It is more flexible there - you can't undo or adjust your editing actions once a file is saved. Plus, the effects applied to the samples are pitch shifted along with the rest of their content. Usually you don't want that.

*What actually is resonance? Resonance is easily defined as a state, where (sound) energy has a hard time exiting from a system. It is trapped there and causes a long, sustained continuation of alternating states of physical forces and movement (summarized and percieved as vibration).

A specific mode of vibration or resonance mode is a specific pattern defining which parts of a system or object vibrate in which way/direction to effictively store vibrational energy. Those can be very simple (thickness mode of a plate) or rather complicated, especially with complex geometries such as a violin body or... drinking glasses?).

One system or object can have multiple "favorable" modes of resonance, which might be able to be excited independently, but might also share some zones of vibration, where they either interact when vibrating, or at least are excited alongside when hit at the corresponding zone. Then you can hear how hitting at one spot of the object primarily creates one kind of tone, while another one creates another one. Eventually you might find spots to excite both (or even more) tones.

Multiple modes of vibration can also add up on each other and cancel each other out, either in the vibrating glass itself, or in the air where all the emitted sound waves are mixed together anyway. This can create audible modulation and beat effects and very interesting sounds.

For clarification of possibly colliding terminology:

With most musical instruments, resonant characteristics and their "formants" are static, as e.g. the body of an acoustic guitar does not change its shape when hitting different strings, with percieved resonance characteristics being mainly dependent on the body geometry. Thus, "resonance" as a term is sometimes used for any filter that remains static across the notes or keys played, even with synthetic software instruments. Changing resonance (especially its formants) is often done using expression pedals or plugins ("wah-wah").

Any 'real resonance' heard in a sample is however pitch-shifted along with the sample itself when playing different notes, thus the term - although not physically wrong in its own respect - is not compliant with what some might think they know as "resonance".

Other times, the term "resonance" is used to quantify the height and/or narrowness of a filter (it's "quality factor" or "Q", e.g. in subtractive synthezisers, where a narrow filter is used to make a recognizable note out of white noise). This is not entirely wrong in principle either, but might still be confusing.

Better be prepared to talk to people who might use the term with a variety of meanings and try to use it as correctly as you can ;)

The Downstream Signal Chain

DownstreamSignalChain.png

The playback signal chain is actually more of a network, but not exactly rocket science either.

In the downstream process, the samples are loaded into a software instrument plugin (Sound Font player, with the most supported version being called 'SFZ') that plays them back according to which keys are pressed on the MIDI controller.

Which samples the player should play when and how exactly is determined by an instrument definition (= .sfz file). You can build and customize your software instrument to quite some extent, using the SFZ language 'OpCodes'.

The SFZ interpreter plugin is hosted by a plugin host. This plugin host is a piece of software capable of managing audio and MIDI Inputs and outputs plus modular (plugin-based) processing inbetween. With it you can record, play back and live-listen real time effect processed audio data. Most plugin hosts will qualify to be called Digital Audio Workstations (DAW). LMMS & GarageBand definitely do so.

The plugin host obviously needs to run on a host hardware (PC). A MIDI controller can be plugged in to provide information on when a note with which pitch and which dynamic intensity should be played. Some plugin hosts even provide functionality to use the PC's alphanumeric keyboard for MIDI input ('musical typing'). This again applies to both presented options, LMMS & GarageBand.

Between the PC and any audio/MIDI devices there could (should?) be a physical audio controller device, but all of the functionality is usually also integrated in any PC. Hence for simplicity the depiction is made without an external controller. Quality and ease of use on the other hand usually favor the external device.

The PC's audio output is routed to an output device, be it speakers or headphones - as long as they make you hear it with sufficient fidelity, its fine.

Equipment Characteristics and Required Specs

So now let's really dive into the practical details of the supply materials and their influence on the sound quality of the resulting samples:

  • The better your objects sound in real life, the better the recording is able to sound. Once crap was recorded, no editing of the world will produce high quality results in the end. Sounds like a no-brainer, but behavior of aspiring audio engineers prooves: its not. So take your time finding objects you love to hear ringing when struck.
  • you need to excite sound some way. You can hit the objects with your Finger nail, you can use chopstics of raw bamboo to even metal spoon tails. The harder the objects is, the more 'attack' (loud instant clicking noise from the hit itself) you will get, also more higher modes and overtones will be excited. It can sound cold and brittle, but it can also bring forth that definition you missed otherwise. Using softer things will sound softer, less attack, more of the primary resonance(s), can be just what you want to tame the dominating attack transient, can sound 'warmer', but can also be too low in volume or too dull or boring. Try around with anything you find, but be moderate as not to break anything someone might still value.
  • Hit position also matters. The further down to the base you hit, the thicker and stiffer the material will be at the striking point. This gives more attack and less of what feels like the 'primary mode of vibration'. It might excite even completely different modes. The further up you go, the more of the 'primary mode' you get, until when closing in for the edge, the sound can get 'wobbly' and less defined. The most pleasing sound is usually found somewhere in the middle, maybe 1/3 from the edge 2/3 from the base. Do decide by ear, though!
  • Microphone position: Depending on the vibrational mode, the angle of your mike relative to your object might matter. I found most glasses to emit the loudest and sweetest sounding portion of sound at around 45 degrees from the edge, relative to the glasses rotary symmetry axis... well, just look at the graph in step 5 :)

However placing a mike next to the glass, pointing at it's side walls will most of the time sound good enough, if at all different from the described "optimum" position. You may still find other portions of sound to be emitted from other spots of your glass.

Sticking a microphone inside a glass usually doesn't sound well, as sound energy is emitted and interfered with in all possible ways inside, but you won't really know if you don't try ;)

  • Microphone(s): better mikes will produce better tone - well, but what actually is "good"? You might want to have a condenser microphone rather than a dynamic one, as the condensers are typically brighter and will be able to capture the 'bling' with more high frequency fidelity and overall clarity. Dynamic microphones are best for punchy mids and full bass, which the glass almost doesn't have at all. Still, I'd prefer an SM57 over a too cheap condenser. It's all about knowing your mikes' actual tonal characteristics, trial and error and choosing by ear to get the best results. I recently learned that the behringer B2 Pro large diaphragm condenser is now produced again. It is probably the best large diaphragm condenser microphone you will ever get for less than 200 eur. Behringer doesn't exactly have a reputation for producing high quality gear - yet, I had professional audio engineers lough when they saw this mike, but drop their jaws the moment they heard it.

Anyway, don't get intimidated by price tags, I want to encourage starting with something you have already and tell by your ears whether it suffices your needs. Buying gear should be one of the later things to do, only when you know for sure it's the material that is pulling you down!

  • Audio controller wise, most will be sufficient. Avoid on-board sound cards if possible, those tend to get interfered with by cross-talk from what else is going on at the PC's hardware level.

A valuable feature is the ability to record with higher sample rates (like 96kHz) - usually this is useless as you don't hear the difference directly, but when playing lower notes on your 'chime piano', the audio file gets down-tuned and stretched more and more. Eventually sample rate crackling can occur. This is effectively avoided to some extent if you can record with higher sample rate. It can buy you even another octave of tonal range! Most of the time, down-tuned glass-blings will tonally fall apart before getting you into sample-rate problems. However, for very pure, singular frequency blings, the higher sample rate really does you a favor in terms of playable tonal range.

If your microphone needs phantom power, be sure to be able to provide it, but others might be harmed by phantom, so: know your mikes and beware!

  • The PC should run an operating system as recent as to support LMMS1.3, or any Mac capable of running GarageBand. I suppose it does not require too fancy hardware. Please refer to the LMMS / GarageBand Homepages for your system requirements. In principle, you can even run LMMS on a mac but my experience with it was really poor. The fact that Garageband is just there and so user friendly will make it 1st choice for mac users.

Finally, the practical part!

Screening the Glassware for the Best Sounding

wineMiniatureRound.jpg
roman1.jpg
wineMiniatureConus.jpg
beerGoldRing.jpg
wine2.jpg
balloon1.jpg
cheesebellSide.jpg
dessertCupThick.jpg
champagneParabol1.jpg
cocktailWide.jpg
cocktailConus.jpg
miniBalloon.jpg
dessertCupSmall.jpg
champagneConus.jpg
cocktail.jpg
Dining Glass Chime Orchestra Instruments Shootout

Here is a video showing you how some of the glasses sound on their own and when played as instruments.

If you are looking for more percussive sounds, you might be looking for shorter ringing glasses. You can also play them in higher notes (upshift them more in the downstream process, but that has side effects, too).

  • weird shaped cocktail glasses
  • champagne tubes or
  • small or thick-walled glasses

might be your thing.

On the other hand, if you are going for max sustain, you will find some glasses have cleaner but rather boring ring, while others have vibrato and mode interferences. Those sound more interesting, but can ruin the sound of simultaneously struck chords and tri-tones.

  • wine glasses
  • large balloon cocktail glasses and
  • cheese bells

might fall into this category. Just try around with things you have or can borrow or acquire. You might still find some surprises ;)

Microphone Placement, Room Acoustics, Leveling

mikePositionAdvice.png
rec1.jpg

MICROPHONE PLACEMENT

While continuously exciting the object the way you like best, move the mike &/ glass around and listen for what you like and what you dislike about the sound.

Too close will exeggerate transients and make them painful to listen to, not to mention the rising danger of signal clipping.

Too far will pick up too much room noise, like your Shirt brushing against your body when doing the excitation action. Also breathing can be disturbingly loud on such recordings.

I recommend exhaling after you are sure a sound recording is finished, inhale then and do the next strike. You can hold your breath longer when lungs are filled, although the body is then more tense and prone to unwanted audible movements. Do some breathing between strikes as required if feeling shorter and shorter of air while holding it.

ROOM ACOUSTICS

As you know your favorite positions to excite and to mike', now have one more thought about the room - maybe you can avoid some direct reflections from blank walls by adding soft blankets, or you want to make the room more 'alive' by removing objects that might dampen or diffuse the sound? The mike will need to be a little bit further away from the glass to capture more of the room liveliness sound, if that's your thing.

Maybe you can spot yet another source of noise contamination?

LEVELING

Always make sure you properly level the gain of your microphone input on your audio controller.

Leave enough of headroom so none of the transients will push the signal into clipping. On the other hand, try to record as hot as safely possible to avoid digitalization noise where the ring fades to silence. Good pre-amps will minimize amplifier noise.

If you want to force-squeeze all of the ring by all means, you can place an analog compressor between the mike and audio controller. But you better know what you are doing and weigh the pros and cons carefully before deciding to do so!

Recording

recording.jpg

Ok, your setup is in place and you are ready to go. Your recording checklist:

  • Know your breathing and noise suppresion techniques and stick to them.
  • Wait for long enough every time you let the glass ring out. It's so painful to edit premature fade outs where there could have been more of that perfect ring. Taking time here will save more of it later, as you don't have to re-record after impatience ruined most of the first takes. Yes, me guilty, but only once - I do know better since.
  • Always record multiple takes and more than you thought would be enough. Way too often you realize something sounds wrong only when listening later with the recording setup already rigged down.
  • you can still vary hit strength and position if you're after effect noises or can't decide which really is your favorite. I found weak and clicky sounds less enjoyable as single hits, but surprisingly fresh and airy when playing those as instruments. Just once more: be sure to record multiple takes of everything.
  • You will thank yourself later if you voice-document what you are going to do next, which glass, which technique, where and how. Later everything is just a long audio stream and we tend to remember less of what we did than we initially think. Maybe it's just me, but seriously, something might interrupt you so you have to postpone the editing for a week or three? Or maybe after months you get a feeling you messed up editing and want to go back there again... Better be prepared.

Sample Preparation

glassbling_allfile_screen.png
glassbling_02sampleSelected_screen.png
glassbling_02_1pasteToNewFile_screen.png
glassbling_03normalizeTo0db_screen.png
glassbling_04ChunkBeforeTransient_screen.png
glassbling_05SamplesBeforeTransient_screen.png
glassbling_06chunkBeforeNextTransient_screen.png
glassbling_07NormalizeTo-3db_screen.png
glassbling_09spectrumPlot+notationCode_screen.png
glassbling_08sampleReady_screen.png

Now you recorded a long stream of tens to hundreds of "blings" and need to separate them, level them, and extract main mode frequency/musical note for the use with a sample player.

  • In Audacity, load the recording and take care to set the correct sample rate of the project! Start by selecting the region from way before the transient and until shortly before the next transient. You will well recognize transients, but often you hear the fade out longer than you can see it in the graph. Use max possible Y-scale to see the most of it, but still do rely on your ears with gain as high so you can hear the noise of what should be 'silence'. Do not rely on your eyes!
  • Copy the selection to a new workspace/file. If you were able to record your samples at higher sample rates (e.g.96kHz), then make sure the new file uses this sample rate too! You find the sample rate option permanently visible in the lower-left region of the Audacity window.
  • Back to editing: Start removing silence before your main transient. Be sure not to cut anything that already belongs to the transient, you may hear this and it's pretty unpleasant. Still, don't leave too much before the transient, as this effectively delays your sound after button press.
  • Cut away any other transient there may be at the end of the file, but leave as much as possible of everything before it.
  • Just for now, normalize (AMPLIFY) your sample to 0db.
  • select everything (ctrl+a)
  • Menu: Effect > Amplify
  • set "New Peak Amplitude (db):" to +0dB (this is the default anyway...) and hit enter
  • Then make sure your surrounding is totally silent and turn up your headphones so you can hear the ring fade to silence (probably some remaining background noise), but avoid playing the transient itself, as not to damage your hearing!
  • Start where you can see the fade go silent and listen to where you hear it go silent or drown in remaining background noise. Leave some safety second... or two... or at least 1/2 and cut everything that comes after. Congratz! That's the final length of this sample.
  • have a listen to the end of the sample. If you feel like the end is hard cutting a hissing noise, you might want to apply a FADE OUT:
  • Select region to be faded out, then
  • Go to menu: Effect > Fade Out.
  • My advice is: include some of the still audible glass ring into the faded region, as otherwise you might notice that you just fade a noise hiss. If you do that cleverly, you won't notice the transition from ring to hiss, but rather hear it gently fade to silence.
  • The balancing act here is between:
  • too much of the ring being faded--> you notice the ring being artificially suppressed vs.
  • too little --> the transition to hiss is audible.

Try around a little and find your sweet spot! You will get faster and better when you do this a few times. Get back to redo the first samples if you feel like you found it while processing the later ones.

  • Next, select your whole sample and PLOT SPECTRUM (menu: Analyze > Plot Spectrum). A window opens, showing the frequency spectrum of your sample. When you hover the mouse through the graph, you can see it snap to peaks, and with it, somewhere below the actual plot, frequency (Hz), magnitude (dB) and even standard notation code (eg. C#5) are shown. Write down the notation code somewhere, you will need it later! Don't bother with minor frequency deviations from the theoretical note frequency. You can fine tune the instrument using sfz code later. The good news: this needs to be done only once per instrument, given all the samples of that instrument are excited to yield the same pitch.
  • Ok, now decide on how hot to normalize the sample. Maybe you want to leave a little more headroom than maximum 0dB. Be more like -3dB or even -6dB, using the AMPLIFY and "New Peak Amplitude (db)" functionality again. Make sure to normalize all your samples to the same level.
  • There you have it, your first finished sample! Save it in a well prepared folder system to easily find its relative path.
  • Proceed alike with all the other samples (and instruments). It may seem like quite a procedure at first, but if you key-bind all the functionalites you need, you may get quite fast and proficient at processing all your samples. Sorry, I don't see a reliable way to automate this. Human recognition of where the ring ends and noise starts and how to best apply the fade out is still not trivial. Its not trivial for us humans, thus, training a machine would probably be a master's thesis of effort. Please do let me know if anyone wants to try however!

Screening the Samples for Similarity and Individual Aesthetics

screeningBlings_processed.png

Have a listen through all your samples and decide which ones sound most likeable to you.

VLC media player offers a convenient playlist option to do this, but any decent audio player of your choice will be up for the task as well

If you are after instruments that are made up by only 1 sample, you can screen for which one you like best.

If you want more than that, do direct comparisons to decide which ones could be played together as a sequence in 1 instrument. The instrument definiton can take a sequence of samples which will be cycle through, each next key pressed will play the next sample in the sequence, starting from first to last and over again, once the end of the sequence is reached.

This way you get a kind of 'natural' variation and more 'organic' feel than if every hit is a 100% identical clone of every other's.

Here you have another act of balance:

  • make them too close sounding and you will have a hard time distinguishing your sequence instrument from a singe-sample equivalent, resulting in more effort spent for negligible value gain.
  • Make it sound too different from each other and it will be awkwardly heterogenous.
  • At all cost you should avoid situations where you have a number of close sounding samples and one that is notably off in your sequence. Human brains will be side tracked starting to wait for the one off sample every time in a melody and it will soon be extremely annoying.

!! Beware !! You will have a tonal range of barely 3 octaves to cover with 1 glass (tuning down will run you into sample rate crackling, while tuning up will shorten the ring into more percussive and eventually unnatural sounds. With higher sample rates, you can get around sample rate problems, but the sound will still start to tonally fall apart when pitch shifted downwards too far. So... elevated sample rates can help to some extent, but they cannot be referred to as "free lunch".

Coding Your Instruments

instrDefSingleSample.png
instrDefSingleSample.png
instrDefRelPaths_multiSample_annotated.png
instrDefRelPaths.png

Don't worry, no need to learn a programming language for this. I prepared 3 situations that will cover most of your needs. For a start you can just download my instruments, later you can move to replacing those bits of code connected to your sample files. The most important code adjustments are indicated in the pictures above and code explanations below. Whenever in doubt, please refer to the sfz format tutorials.

Single-sample instrument definition (1 line)

<region> key=42   lokey=c-1   hikey=e9   pitch_keycenter=C6   tune=-32   loop_mode=one_shot   
sample=beer05.wav   amplitude=80

let me explain:

<region> statement announces anything after this statement belongs to the definition of a new region on the claviature

key=42 sets the reference key where on the claviature the pitch_keycenter notation code should be referenced to

lokey=c-1 sets the lowest playable key of the region to be the note C of octave -1

hikey=e9 sets the highest playable key to be note E in octave +9

pitch_keycenter=A#4 sets key number 42 (or whatever you defined as key=...) to be note A# of octave +4

tune=-0 sets the fine tuning (in cents) of the instrument to be zero. the '-' is redundant here.

loop_mode=one_shot sets the playback style such that if a key is pressed on the claviature, no matter how long or when the key is released, the sample is played in full length and does nothing more when the sample is done. And with no fading volume progress whatsoever.

sample=beer05.wav states the sample reference. Here, a relative path is given with respect to the sfz file. As the sfz code file is located in the same folder as the referenced sample file, only the file name but no folder or path reference is stated here.

amplitude=80 sets the playback volume multiplier to 80% of full volume, giving extra headroom for multiple keys pressed adding up to still less than clipping volume. Even values >100 are valid for low volume samples, especially useful in drumsets, where every percussion unit has its own amplitude to set.

Multi-sample / sample-sequence instrument:

<global> loop_mode=one_shot
<group> key=42 lokey=c-1 hikey=e9 seq_length=4 pitch_keycenter=C6 tune=-32
<region> seq_position=1 sample=beer01.wav amplitude=80
<region> seq_position=2 sample=beer02.wav amplitude=80
<region> seq_position=3 sample=beer03.wav amplitude=80
<region> seq_position=4 sample=beer04.wav amplitude=80

here,

<global> denotes whatever is stated here is valid for the whole instrument

loop_mode=one_shot we already know the sample should be played full even if the key is released

<group> states a group of regions to be defined

statements from key=42 to tune=... are set for all <regions> of that <group>.

seq_length=4 sets the length of the sequence to be played to 4 samples. The instrument will try to play as many samples sequentially as defined here, one at the time of a button-press. if less seq_position=...'s are defined than stated in the seq_length statement, the instrument will respond playing as many dead notes as there are missing seq_position statements. seq_position statements only count if their enumerator fulfills a number of criteria. Each one must be:

  • a strictly positive integer value
  • non-redundant
  • smaller or equal to the seq_length value

every <region> statement defines a new region and region-specific properties to be set individually

seq_position=n defines each (n-th) sample's position in the sequence.

you already know whats up with the rest.

Percussion instrument (kitchen drums):

<group>        key=38    seq_length=2        
<region> seq_position=1 sample=snares01.wav    amplitude=90    loop_mode=one_shot
<region> seq_position=2 sample=snares03.wav    amplitude=90    loop_mode=one_shot

<group>     key=42    seq_length=2
<region>seq_position=1
sample=measureSmall01.wav    amplitude=80    loop_mode=one_shot
<region>seq_position=2
sample=measureSmall02.wav    amplitude=80    loop_mode=one_shot

<group>     key=44    seq_length=2
<region>seq_position=1
sample=measureLarge01.wav    amplitude=80    loop_mode=one_shot
<region>seq_position=2
sample=measureLarge02.wav    amplitude=80    loop_mode=one_shot
 
<group>     key=46    seq_length=2
<region>seq_position=1
sample=bin05.wav    amplitude=80    loop_mode=one_shot
<region>seq_position=2
sample=bin06.wav    amplitude=80    loop_mode=one_shot

<group>     key=57    seq_length=5
<region> seq_position=1 sample=knivesBackGrind10.wav    amplitude=80    loop_mode=one_shot
<region> seq_position=2 sample=knivesBackGrind11.wav    amplitude=80    loop_mode=one_shot
<region> seq_position=3 sample=knivesBackGrind12.wav    amplitude=80    loop_mode=one_shot
<region> seq_position=4 sample=knivesBackGrind13.wav    amplitude=80    loop_mode=one_shot
<region> seq_position=5 sample=knivesBackGrind14.wav    amplitude=80    loop_mode=one_shot


<group>        key=36 seq_length=1
<region>     sample=kick01.wav    amplitude=80    loop_mode=one_shot

<group>          key=53    seq_length=2
<region>seq_position=1
sample=shaker04.wav    amplitude=45    loop_mode=one_shot
<region>seq_position=2
sample=shaker06.wav    amplitude=45    loop_mode=one_shot

<region>     key=51 sample=shaker01.wav    amplitude=80    loop_mode=one_shot

<group>          key=40 seq_length=3
<region>seq_position=1
sample=pan02.wav    amplitude=70 loop_mode=one_shot
<region>seq_position=2
sample=pan04.wav    amplitude=70 loop_mode=one_shot
<region>seq_position=3
sample=pan06.wav    amplitude=70 loop_mode=one_shot


here you can see multiple regions and groups with varying sequence lengths being bound to individual keys, following standard midi drums key-binding as far as possible:

key 36: kick drum (dishwasher door slammed shut)

key 38: snare drum (enamelled pan)

key 40: another snare drum (another enamelled pan)

key 42: hihat, closed (cocktail measure cup, small side)

key 44: hihat, half open (cocktail measure cup, large side)

key 46: hihat, open ( table top stainless steel waste bin)

key 57: crash cymbal 2 (knives' backs grind)

key 51: ride (cocktail shaker, hit near rim)

key 53: ride bell (cocktail shaker, hit near bottom)


I actually also have real drum sets with my own recorded samples. Please contact me if you are interested!

For the plugin to find the sample.wav files specified in the code, they must be present at the path given in the sfz code

--> paths are by default relative to the location of the sfz file. Hence, if you have .sfz file and sample.wav files in the same folder, you can move this folder around without changing code. Only the .sfz file needs to be re-loaded in the plugin whenever it's absolute path has changed. always reload the .sfz file whenever you change its content!

For going further, there are a ton of capabilities in the sfz language we didn't use yet. Please refer to the SFZ language REFERENCE and TUTORIALS for more specific info & help on those.

You can of course call for help in the comments, whenever you feel suitable! I always love hearing your stories and helping out wherever I can. Especially if a question feels stupid to ask, that's actually a good indication it's a rather good one, so please share!

Get & Prepare Your Plugin Host

LMMSmainWinLinux_annotated.png
lmmsWinSidePane_VSTversion.png
lmmsVeSTigeLoadedAnnotated_VSTversion.png
VeSTigePreferencesWindowAnnotated_VSTversion.png
LMMSsidePaneLinux_annotated_carlaVersion.png
LMMScarlaRackPreferences_annotated_carlaVersion.png

Feel free to use your plugin host of trust. Still, I will show how to do it in LMMS 1.3 alpha, as it is literally available for everyone (all OS's and free) and has the capabilities to load sfz plugins on all of the OS's and supports extensive alphanumeric keyboard "musical typing".

It needs to be an non-stable version however, as the stable ones do not support Windows VST DLLs, which we do need at this point.

Actually, I recommend starting with Ubuntu Studio, as all the audio related stuff is already preconfigured there. This can be quite painful to do yourself and might even break for no obvious reasons, forcing you to pick the studio version anyway. It also comes with a lot of noteworthy, readily compiled software for multimedia content creation.

LMMS 1.3 alpha is still none of those however, the "non-stable" version must still be downloaded as a .appimage here: https://lmms.io/download#linux.

After making the downloaded .Appimage executalble by a terminal command (example, need to adjust at least your path! Best practice is to type the 'sudo chmod +x ' and then drag'n'drop the file from a file explorer window):

$ sudo chmod +x /your_path_to/lmms-1.3.0-alpha.1.102+g89fc6c9-linux-x86_64.AppImage

Try to open it.

LMMS1.3 alpha is also available for Windows here: https://lmms.io/download#windows.

Install as any software the way you are used to and open it up.

After choosing some preferences when opening it for the first time, you get to the main window view of a new project.

  • Expand the side pane. There you should find at least 1 of the following 2 entries:
  • VeSTige to load 32bit Windows VST DLLs
  • Carla Rack to load Linux plugins, or even directly .sfz files.
  • Drag either of those to your track mixer window. This will create a new track with either Carla or VeSTige as the respective signal source.
  • Try using another track with another signal source, such as "Organic" or "Triple Oscillator", just to check if you get any sound in general, before blaming the sfz plugin or instrument definition.
  • Double click its symbol (at the leftmost area of the track line to open it's preferences. A little window should open, showing a musical keyboard and some preferences.
  • At least then you should hear what you are playing on your PC's alphanumeric keyboard, or you can hit the on-screen keyboard with your mouse.
  • If nothing is heard or seen, try to chase where your signal is blocked. Refer to step 13 - Troubleshooting, as well as the software's documentation for help.


  • On Mac I still would prefer getting GarageBand (from the Apple app store for free or buy used iLife CDs, peer-to-peer for older versions) as a host, for simplicity. Its alphanumeric keyboard "musical typing" capability is very limited compared to the one of LMMS, but that's not the way it's meant to be played anyway.
  • Start with a blank project and
  • add or repurpose a digital instrument track (top menu bar > tracks > add > software track)
  • show instrument preferences side bar (cmd+i)
  • click the instrument/signal source pane to chose instruments from a list. User installed instrument plugins should be shown along with the preinstalled ones.

Get & Load Your SFZ Plugin

VeSTigePreferencesWindowAnnotated_VSTversion.png
VeSTigeLoadPluginAnnotated_sforzando_VSTversion.png
VeSTigePreferencesWindowOpenPluginGUI_VSTversion.png
LMMScarlaRackPreferences_annotated_carlaVersion.png

If you have your Carla Rack track in Linux LMMS, just open its GUI and drag your .sfz file into the rack area from a file explorer window. But thats actually the content of the next step (what a nerd you are!)

On Windows or Mac the only one fully functional free plugin I found to be sforzando, by Ploque, available for download when scrolling way down at: https://www.plogue.com/downloads.html.

--> If you can't get Carla Rack track in Linux LMMS (older LMMS versions), you can still get the Windows 32bit version of sforzando to load in a VeSTige track. If VeSTige is not available, make sure you do have AND are running an LMMS version with experimental features enabled (like 1.3 alpha / nightly build as per time of writing, 25th July 2023).

Without Carla on Linux, you also have to install the Windows plugin using wine - please refer to wine documentation on how to acquire it and how to do this. If you can't, have my precompiled .DLL file as a last resort emergency option here. No promises on this one, it's really just a try if everything else fails!

Install your SFZ plugin as required and load it as your digital instrument

  • Into VeSTige - load plugin DLL (Windows LMMS)
  • Choose as digital instrument in GarageBand (Mac)

Load Your SFZ Instrument

VeSTigePreferencesWindowOpenPluginGUI_VSTversion.png
VeSTigeSFZloadedAnnotated_sforzando_VSTversion.png
SFZloadInstrumentAnnotated_sforzando_VSTversion.png
LMMScarlaRackPreferences_annotated_carlaVersion.png
LMMScarlaRackGUI_annotated_carlaVersion.png
LMMScarlaRackSFZmounted_annotated_carlaVersion.png

In Carla Rack, just drag the .sfz file from a file manager window into the rack area of the open Carla GUI. That's it, way to go!

When opening the GUI of the sforzando plugin on any other platform, click its "Instrument" pane. A window will open. Navigate to your .sfz file and confirm to load it.

Done as well!

You can adjust the instrument pitch semi-tone wise by dragging the square dot above the claviature shown in the LMMS instrument properties window.

Troubleshooting

TroubleShooting_MainWin_annotated.png

If it doesn't play right away, there could be a number of reasons why. Let me start from the quickest and easiest to fix and proceed to the trickier ones on the way.

  • Maybe your volume is down. Seriously? Yeah seriously, struck me a number of times. There are a number of 'volumes' that need to be non-zero, or actually loud enough:
  • PC's Master volume
  • PC's Software Audio output
  • Audio controller's Hardware controls?
  • LMMS master Volume (rather centrally at the top Bar of the LMMS main window)
  • Software instrument volume (vol pot at the track's leftmost end, or vol pot in the instrument properties window)
  • In LMMS, the correct 'instrument properties' window must be open and active. Open it or click on it to ensure it is active.
  • Maybe the 'musical typing' keyboard is not active. Try clicking on the 'instrument properties' window and click onto the keys of the claviature shown at the lower end. Vary clicking position, the further up you click, the louder the note is played.
  • There could be a problem with your sfz file.
  • Beware Carla might not cycle through the defined sequence correclty in multi-sample instruments. Use sforzando if in doubt, this one really does play sequences correctly!
  • If you (or capabilities of your system) insist on using other sfz interpreters, try single-sample instruments first! Those tend to work rather than their multi sample counterparts.
  • If you suspect the sfz code to be faulty, refer to step 9 - Coding Your Instruments, then to the sfz language reference, but don't hesitate to write comments if anything remains unclear!

If you can't find the side pane, first look if its on the very right-hand side? This could have been accidently set when first opening up LMMS, but can as easily be alleviated going to the top-bar menu:

Edit > Settings > General > "Show sidebar on the right-hand side" ---> UNCHECK!

Another Approach / Workaround in Case of Failure

AudioFileProcessor1.png
AudioFileProcessor2.png
AudioFileProcessor3.png
AudioFileProcessor4.png

If there is a major problem with all attempts to get SFZ instruments running in LMMS, there is still a quick and dirty workaround to get you play samples on a MIDI keyboard. Or maybe you just wish you had more control over the volume envelope of the sample, and do not mind dropping the multiple-samples-feature?

Then just use LMMS's native 'AudioFileProcessor' instrument. Here's how you roll:

  • Open the side pane if not opened already
  • Drag'n'drop "AudioFileProcessor" into the mixer's track header region
  • Click the symbol in the track header to open GUI
  • In the GUI, find the tiny folder symbol to load a sample
  • Click or type keys on the AudioFileProcessor GUI claviature
  • If nothing is heard, check all the volume sliders and mute buttons beginning at the instrument GUI, all down to hardware level - again.
  • If still nothing is heard, that's the latest point where you should write a comment ;) 

This can be used as a full alternative to the SFZ approach and even has some...

Advantages:

 (+) This feature is also available in stable releases of LMMS

(+) You can fine tune volume envelope parameters by GUI sliders, such as:

  • ATT: soft start the sample with a fade in
  • HOLD, DEC, SUST: volume progression during key-press
  • REL: slowness of volume drop after key release (go to higher values so it is not chopped off so hard after key release)

(+) It also allows further modulation with LFO's and whatnot

But also comes at a cost, such as:

 (-) You can't play multiple samples in a sequence

 (-) You can't have multiple regions.  

 (-) It is hard bound to LMMS, thus, you need to find another solution if you intend to use another DAW or plugin host.

Secret tip: If you're after super atmospheric ambience, try this with the "ovenGrate_processed..." samples in the "oven" folder of my instruments package. With well-adjusted attack and release parameters, chord-progressions can sound out of this world.

Playing and Enjoying

Now you finally made it all the way through! Have fun playing!

Yet, please be mindful. From the teaser Video in step 4: Screening Glassware for the Best Sounding, that goes through various pieces of glassware, we know that not every musical pattern sounds equally great with all the glass tones and their characteristics.

  • Basically, the more interesting a single hit sounds (complicated tonal spectrum and/or more modulation of amplitude and pitch), the 'better' it sounds solo and slow, but will get awkward and distracting if too many notes are played in a too short time.
  • On the contrary, those more straightforward sounds with dominating main resonance and few distracting features really live up when accompanied with other hits to form harmonics and chords.
  • Also, longer ringing 'blings' take their time to fade, hence fast chords progression will lead to dissonant noise buildup. Lower pitch notes are longer ringing too.
  • Short percussive sounds will have to be played faster, with more hits joining each other to not sound, well... lost.

--> Contrary to my example, consider getting a USB MIDI controller if you're yet a 'musical typer'.

  • It feels more like it should,
  • offers you dynamic playing capability (louder sound upon harder hit of the key) and
  • you will make progress faster and further as a chime orchestra maestra/maestro.

For the videos, I wanted to emphasize on how easy it is to get started, thus no MIDI controller is seen here.

Any serious keyboard you may have already is probably cabable of delivering MIDI signals too, it only might take an external audio controller and drivers to convert the "old" MIDI port communication into something USB-compatible.

Now, let me wish all of you lots of fun and many enjoyable hours with your new chime orchestra!

And please leave comments if you do care or if you are having troubles. Let's do our best to find a solution!


Thank you!