Axentax Documentation

website·Indexed 30 days ago

https://axentax.github.io

A guitar-specific music description language designed for guitarists to realize advanced playing techniques and musical expressions through intuitive syntax. Features include support for string noise, slides, choking, vibrato, degree specification, and map functions for loop processing.

Tokens
6.2K
Snippets
51
Records
68
Agent score
70%

What's inside Axentax

  1. Overview of Axentax music expression capabilities

    Axentax provides an intuitive notation system designed to implement advanced playing techniques and musical expressions simply. It allows developers and musicians to define complex structures concisely, offering high-flexibility mapping and step-based playing methods for precise control over performance expression. The system is optimized for rapid prototyping of musical ideas, such as the instant deployment of scales and arpeggios.
  2. Introduction to Axentax music description language

    Axentax is a music description language specialized for guitar. It allows guitarists to create sophisticated solo performances with minimal notation by combining scale expansions and loop playing. The tool functions as a creative instrument beyond a standard MIDI editor, enabling users to experiment with scale developments and download the resulting phrases as MIDI files.
  3. Use the Guitar Fretboard displays

    The Playground provides two types of fretboard visualizations:

    • Large Fretboard: Toggled via the bottom button group. It displays fret information for nodes assigned in the editor and highlights keys belonging to the identified scale.
    • Play Monitor (Right Sidebar): Contains three guitar fretboards that move positions in sync with the phrase during playback. It also displays the step and map status of the currently playing note.
  4. Combine multiple bends and vibratos on a single note

    Multiple ornamental effects (choking/bends and vibrato) can be applied to a single note by separating them with commas inside the :bd marker.

    Note: The division notation (e.g., /8) is only required for the first entry; subsequent entries within the same :bd block inherit this division. You cannot change the division notation within a single :bd block.

    @@ {
      ||7:1/1:bd(
        0..2/8 1      // Bend 1 semitone from 0 to 2/8
        2..6 2 vib    // Vibrato 2 semitones from 2/8 to 6/8
        6.. -2        // Bend down 2 semitones from 6/8 to end
      )
    }
  5. Change instrument sounds or add distortion

    The tool currently only provides default sounds. To use distorted sounds (distortion/overdrive) or different instruments, import the created MIDI file into a DAW and change the instrument there. Developers can achieve this by modifying the SoundFont in the source code available in the GitHub playground repository.
  6. Implement slide-in effects in tab notation

    A slide-in is created by separating two tab notations with the >> operator. To control the slide speed, add !value immediately after the first tab, where the value ranges from 1 to 500. Smaller values result in faster slides, and larger values result in slower slides.
    @@ {
      ||2|2||>>|||5|5| // Basic slide from fret 2 to 5
      r ||2|2||!200>>|||10|10| // Slow slide
      r ||2|2||!20>>|||10|10| // Fast slide
    }
  7. Manage click tracks with @click

    Use @click(interval) to start a metronome click, where the interval is specified as a note value (e.g., 1/4 for quarter notes). To stop the click track, use the @/click command.
    @@ 1/4 {
      @click(1/8)
      C7 Dm7 Em7 C7
      @click(1/4) // Change click interval to quarter notes
      Fmaj7#5~~~
    }
    
    @@ {
      @/click // Stop the click track
      Badd13
      @click(1/6)
      Badd9
      Baug7
      @click(1/8)
      Edim7
    }
  8. Implement legato (hammer-ons and pull-offs) with :leg

    The :leg marker simulates legato (hammer-ons/pull-offs). It can only be applied to notes on the same string within a 4-fret range. The :leg marker must be placed on the target (subsequent) note.

    Constraints:

    • Cannot be used simultaneously with bends or vibrato.
    • If a sequence of legato notes contains a jump of 5 frets or more, the system may disable the legato processing for the entire group and only simulate the volume change. To avoid this, terminate the legato group before the large jump by omitting :leg on the note preceding the jump.
    // Basic legato sequence
    @@ 1/4 160 {
      |||||2
      |||||4:leg
    }
    
    // Complex sequence with a jump
    @@ 1/4 160 {
      |||||2
      |||||4:leg
      |||||2:leg
      |||||5:leg
      |||||0       // No :leg here to break the group and avoid disabling the effect
      |||||3:leg
    }
  9. Implement the continue function to sustain notes

    To let a previous note ring while playing the next note, start the line with ... This is useful for arpeggios or extending a note's duration. It can be used with Tab notation or after a Chord.
    @@ {
      0|2|2
      ..||3
      ..||5
      ..||7
    }
    
    // Using with chords
    @@ {
      Em7
      ..||3
    }
  10. Apply a standard configuration for style and click settings

    Use the following settings for a 'Normal' configuration. This setup defines the scale as C major, sets the click velocity to 18, and configures the timing for style and click events. For chord progression creation, use set.style.until: 4/4 for minimal ornamentation, or set.style.until: 1/4 when more ornamentation is desired for better usability.
    set.style.until: 1/4
    set.style.scale: C major
    set.click.velocity: 18
    set.click.accent: 1
    set.click.until: 1/3
    
    @@ { C }
  11. Configure pitch shift intervals with :map()

    You can skip specific intervals within a scale using the step keyword. The syntax is :map(start point step interval * repeat count).
    @@ 1/4 120 {
      |||5:map(0 step 2 * 4)
      |||5:map(0 step -2 * 4)
    }
  12. Get started with Axentax composition

    To begin composing in Axentax, use the Axentax Playground. The basic structure of a composition consists of a 'region' (@@) and a 'block' ({}). Ensure your editor contains at least @@ { } to start. Note that configuration settings (starting with set.*) are preserved even when the main syntax is cleared.
    @@ { }