---
title: Xen Harmonic Functions
layout: ../../layouts/MainLayout.astro
---

import { MiniRepl } from '../../docs/MiniRepl';
import { JsDoc } from '../../docs/JsDoc';

# Xen Harmonic Functions

These functions allow the use of scales other than your typical chromatic 12 based ones.

### tune(scale)

<JsDoc client:idle name="tune" h={0} />

Here's an example of how to configure a basic hexany scale:

<MiniRepl client:idle tune={`"0 1 2 3 4 5".tune("hexany15").mul("220").freq()`} />

Try other scales like `hexany1`, `iraq`, `gumbeng`, `gunkali`, or `tranh3`

For a full list of available scales from tunejs, see http://abbernie.github.io/tune/scales.html

You can set your root to be a particular note with `getFreq`

<MiniRepl
  client:idle
  tune={`"4 8 9 10 - - 5 7 9 11 - -".tune("tranh3")
    .mul(getFreq('c3'))
    .freq().clip(.5).room(1)`}
/>

Some tunings become more pronounced with a longer reverb decay:

<MiniRepl
  client:idle
  tune={`"<[5 6 8 10] - [5 7 9 12] -> -".tune("gumbeng")
  .mul(getFreq('c3'))
  .freq().clip(.8).room("3:10").rdim(10000).rfade(5)`}
/>

Additionally, you can combo this with `fmap` so that the base note changes:

<MiniRepl
  client:idle
  tune={`"9 11 12 10 - - -".tune("gunkali")
  .mul("<c3 c3 a3 d#3>".fmap(getFreq))
  .freq().legato("2 .7").room("1:15").rdim(8500).rlp(14000).rfade(8)`}
/>

Combining this with various polyrhythm tricks can become very evocative:

<MiniRepl
  client:idle
  tune={`"<[0 3 1 -] [-1 4 2 8]> ~ ~,<-4 -5>"
  .transpose(4)
  .tune("iraq")
  .mul("<c3 d3 c#3>".fmap(getFreq))
  .freq().clip(.5).room(1).rfade(9)`}
/>

Another helpful trick when exploring new tunings is to strum them.
Many have a much more enchanting sound that was chosen over many generations of musicians for being strummed.

Take the `sanza` tuning:

<MiniRepl
  client:idle
  tune={`"4 5 6 7 8 9".tune("sanza")
  .mul(getFreq('c3'))
  .freq()`}
/>

Notes 7 and 9 will clash quite a bit if you arp them normally. Many tunings will have this sort of sound, and it can feel distracting on its own.
See how close they are on the pitch wheel?

<MiniRepl client:idle tune={`"[7 9]!3".tune("sanza").mul(getFreq('c3')).freq()._pitchwheel()`} />

This quality is often due to how the tunings were formed with instruments that were played differently than a piano.
As such, some tunings are much better strummed, with the subtle clash of the detuned notes actually making the sound much more magical:

<MiniRepl
  client:idle
  tune={`"[0 1 2 3 4 5 6]@0.3 -"
  .transpose("<2 5 8 1>")
  .tune("sanza")
  .mul(getFreq('c3')).freq()
  .legato("3").room(1).rfade(5)`}
/>

Note the legato and reverb effects make sure the sound of the strumming gets to wash together. Alternating the direction of the strum can make the
tones sound even more alive, too.

The `tranh3` tuning has a similar set of notes, with two clashing. You might trying plugging that in above and see if you find a favorite strumming pattern.
