Making XJ music

Libraries

Libraries are collections of content within the XJ workstation. When you open a Project, you’ll see a list of all its Libraries.

Programs

In XJ music, a Program is a collection of musical instructions.

Instruments

In XJ music, an Instrument is a collection of Audios. While all instruments are stored according to the Instrument Model, different Types and Modes of instruments have unique purposes and behaviors.

Memes

A meme is a tag that artists apply to programs and instruments in order to guide the choices that XJ makes.

Chord Interpretation

Glossary of all valid chords and their interpretations

Fabrication

XJ music fabrication is the command center of the XJ music workstation, offering precise control over playback of your compositions.

Templates

Templates are packaged compilations of Libraries, potentially highlighting specific Instruments and Programs that can be previewed and/or broadcast.



Subsections of Making XJ music

Libraries

Libraries are collections of content within the XJ workstation.

When you open a Project, you’ll see a list of all its Libraries.

Libraries Libraries

Click on the name of a Library to see the content within.

Libraries contain two types of content: Programs and Instruments.

Pro Tip

The buttons on each row can be used to Edit, Duplicate, or Destroy that Library. Libraries Buttons Libraries Buttons

Programs

In XJ music, a Program is a collection of musical instructions. While all programs are stored according to the Program Model, different Types of programs have unique purposes and behaviors.

Each program contains a configuration, which may affect the music when that program is chosen.

The program menu contains a list of all programs.

Here you can see the attributes of each Program, as well as the memes assigned to it.

Programs Programs

To compose the content of any given program, click its name in the list to open the Program Editor.

Program Model

XJ music Program Entity Model XJ music Program Entity Model

Program Details

Events

Sequence pattern events are used as a basis for selecting and assembling instrument audio

Configuration of Programs

Type Purpose barBeats Sets the length of a bar, as measured in total number of beats.

Types of Programs

Type Purpose Macro Programs Like a playlist, this describes an order in which to play songs a.

Subsections of Programs

Events

Automatic fabrication performs a search for matching Instrument Audio for the chosen Sequence Pattern Voice-Events. That is how an Audio is chosen inside of an Instrument, based on its Audio-Events.

We use a score-based stochastic model for event audio picking, as opposed to the marble bag model we use for choice.

Drum Beat Events

The beat program is the center of the groove during any given main program. XJ chooses a single beat and keeps that beat for the duration of the main program.

It is important for percussive-type instruments to use the following standardized set of Event Names, which have far more influence on the outcome of percussive instrument-audio choice (than, for example, Event Notes).

Currently, we are using a very narrow set of events for in Beat-type programs.

We currently use these codes, for beat program events, and drum instrument audio events:

CODEName
HIHATCLHigh Hat Closed
HIHATOPHigh Hat Open
KICKKick
SNARESnare

Drum Detail Events

In the future, XJ will also choose Detail programs having additional drum events to decorate the groove. These drum detail programs serve a similar function as percussion loop and transition instruments.

We expect that these events may include various types of drums or other percussion instruments.

We plan to use these codes for drum detail program events, and drum instrument audio events:

CODEName
BONGOHIBongo High
BONGOLOBongo Low
BLOCKWDLOBlock Wood Low
CABASACabasa
CLAPClap
CLAVESClaves
CONGALOConga Low
CONGAHIOPConga High Open
CONGAHIMUConga High Mute
COWBELLCowbell
CRASHCymbal Crash
CUICAOPCuica Open
CUICAMUCuica Mute
GONGGong
GUIROSHGuiro Short
GUIROLNGuiro Long
HIHATCLHigh Hat Closed
HIHATOPHigh Hat Open
KICKKick
MARACASMaracas
RIDECymbal Ride
SHAKERShaker
SLAPSlap
SPLASHCymbal Splash
STICKSIDEStick Side
TAMBOURTambourine
TIMBALEHITimbale High
TIMBALELOTimbale Low
TOMFLRHITom Floor High
TOMFLRLOTom Floor Low
TOMHITom High
TOMHIMIDTom High Mid
TOMLOTom Low
TOMLOMIDTom Low Mid
TRIANGMUTriangle Mute
TRIANGOPTriangle Open
VIBRASLAPVibraslap

Percussion Loops

Percussion Loops have an Instrument Type of Percussion, and an Instrument Mode of Loop.

They are assigned for each fabricated segment during percussion loop craft. It’s going to be used to determine a target # of perc loops.

Assumed that one or more loops will be chosen for any segment— minimum and maximum are configured via template config. For each MP, setup delta arcs for N number of percussive loops.

Perc loop instrument behavior selects one audio per section. Consolidating audio with the same sound set under one instrument. Then setting the default length an audio stays in the stream to a full section rather than switching every 4 beats.

Percussive Loops can specify # beats in the instrument or audio editor.

Loop Priority

Some Perc Loops are killer by themselves. In the case of house music, this might be a fully fleshed out 16x 16th notes of house locomotion, requiring only an added kick and snare to be complete. Let’s call these PRIMARY perc loops.

Other Perc Loops are intended to be added on top of a stable base of Primary perc loops.

Other Perc. Loops are intended to support the known structure of the rhythm.

Based on the intensity value of any given perc loop and the current mix intensity, XJ will fade each perc loop into the mix.

Configuration of Programs

Configuration of Programs Configuration of Programs

TypePurpose
barBeatsSets the length of a bar, as measured in total number of beats.
cutoffMinimumBarsSets the minimum length of bars that a sequence can transition into another in.
doPatternRestartOnChordDetermines whether patterns restart on chord changes.

Types of Programs

TypePurpose
Macro ProgramsLike a playlist, this describes an order in which to play songs a.k.a. main programs.
Main ProgramsLike a song, this musical notation describes chord progressions, as well as voicings of those chords for various types of instruments.
Beat ProgramsThis describes a beat, as in the foundation of a groove. XJ chooses one beat for an entire song (Main Program). This musical notation is used directly for a Drum Instrument to play.
Detail ProgramsThis involves transcribing the rhythmic pattern for a specific instrument, allowing XJ to interpret and apply it to any song based on its chord voicings.

Subsections of Instruments

Instrument Behavior

Different Types and Modes of instruments have unique purposes and behaviors.

Option A, is to tag audios with a single chord symbol (ie Cmaj7, Emin7b5) which is itself a shorthand for a list of notes (C, E, G, B and E, G, Bb, D for these examples)

With some clever voicing list tricks you could have a lot of freedom with this route. For example if you wrote a voicing list that included both Fmaj7 and Amin7 you would be outlining Fmaj7/9

The more complicated and versatile route, Option B, is what you’re saying—tagging audios with comma-separated lists of notes and having XJ cross-reference those with Main Program voicing lists to choose audios.

I think both will be useful, but to me the chord symbol tagging seems like a faster route to get multi-note audio happening because it’s the same process as the current single-note tagging. I could be underestimating what’s going on currently though

Theoretically, option B is closer to what exists today, but that’s not an obstacle.

I believe that there is a simple formula to tell us whether Option A or Option B yields more freedom a.k.a. modularity a.k.a. less work for more payoff.

Starting with Template Analysis (soon to be built) we can see how many different chords are present in all the main programs of the given template (For each type of instrument independently?) Calculate the relative complexity of using Chord-based (option A) or Note-based (option B) audio Chord-based complexity = How many different audios would be required to cover all the chords present in all main programs Note-based complexity = How many different audios would be required to cover all the voicing lists present in all main programs I suspect the answer (A vs B) varies between templates and instrument types

Instrument Configuration

SettingDescription
isMultiphonicToggles whether multiple notes can be played at once.
isAudioSelectionPersistentToggles between persistent and randomized audio selection.
isOneShotToggles Instrument between one shot sounds and loops.
isOneShotCutoffEnabledEnables one shot sounds to cut one another off when played.
isTonalDetermines whether audios are tonal or atonal.
oneShotObserveLengthOfEventsDetermines whether one shots play out fully or are influenced by the length of their events.
releaseMillisSets release length in milliseconds.

Instrument Menu

The instrument menu contains a list of all instruments. Each instrument contains a configuration, which may affect the music when that instrument is chosen.

Here you can see the attributes of each instrument, as well as the memes assigned to it.

Instruments Instruments

To compose the content of any given instrument, click its name in the list to open the Instrument Editor.

Pro Tip

The buttons on each row can be used to Move, Edit, Duplicate, or Destroy that Instrument. Instruments Buttons Instruments Buttons

Instrument Modes

Chord-mode Instruments

A chord-mode instrument such as a Pad-type instrument will provide a single audio per chord. In that case each row (audio) in the instrument will use the tones column to store the chord. The event column is ignored.

When choosing instrument audio (from a chord-mode instrument) for the chords of a main program, XJ will prioritize (see: marble bag) any available exact match. In lieu of an exact match, XJ will allow an acceptable substitute of the pre-slash description of a chord to a non-slash chord (e.g. “Eb/G” is an acceptable substitute for “Eb” and vice versa).

While the presence of voicings is used to make the decision “I’m going to look for a ___-type instrument” once XJ has arrived at the decision “I’m going to craft this ___-type chord-mode instrument now for this segment” there are zero references to voicing content. The content of the chord voicings is ignored. E.g. It’s possible to tell XJ to seek Pad instruments for a given main program even if the content of those voicings are all just “X” but it’s critical to understand the whole template you are composing. If the design of the template calls for both Note- and Chord-type instruments for a given instrument type, then it’s necessary to write whole voicings (comma-separated lists of notes voicing each chord) for interoperability.

For a table of XJ’s chord comprehension, see Chord Interpretation

Event-mode Instruments

A polyphonic instrument such as a Bass-type instrument will provide a single audio per note. In that case each row (audio) in the instrument will use the tones column to store the note. The event column is ignored.

A Drum-type instrument will provide a single audio per drum event. In that case each row (audio) in the instrument will use the event column to store the event. The note column is ignored.

Loop-mode Instruments

Audio in loop-mode plays through its total length continuously, repeating at the start of each Main Program selection in a segment.

Instrument Properties

In the top header of an instrument are included properties that apply to the entire instrument, such as names, memes, type, mode, state, and volume.

Instrument PropertyDescription
NameThe name of the audio file. This defaults to the filename of the audio after importing but can be changed in the audio editor menu.
EventDetermines the type of instrument audio event that the chosen audio will be, which influences the mixing choices of a segment.
VolumeThis value is a floating point integer that sets the volume of the chosen audio. 0.0 is completely silent and 1.0 is the original volume of the imported audio file. The volume value can be increased beyond 1.0 and its original volume, for example, an audio set to 2.0 will be twice as loud as the original file.
IntensityA floating integer from 0.0 to 1.0 that determines the intensity level at which the audio will get introduced into the overall mix in a segment.
TonesThis value sets the note for the chosen audio. It can be a single note or chord.
TempoSets the audio’s tempo in beats per minute.
TransientA floating integer that determines in measurements of seconds where the chosen audio will be starting from when its event is slated to trigger. For example, the default transient offset is 0.0, indicating that the audio will start playing at the beginning of its file when triggered. A transient offset of 0.5 will include a pre-roll of 0.5 seconds and be that far into the audio when previously it would just be starting.
Loop BeatsAn integer that determines the length of a given audio, measured in bars.
Pro Tip

The buttons on each row can be used to Edit or Destroy that Audio. Instrument Properties Buttons Instrument Properties Buttons

Instrument Types

Drum

Drum instruments contain audios that XJ will pair with Beats during the beat-craft phase. This can be any one shot drum event, including kick drums, snare drums, hi-hats, toms, cymbals, and more.

Bass

Bass instruments contain melodic bass audios and can be played in all three instrument modes- event, chord and loop. Bass instruments are introduced during the detail-craft phase.

Pad

Pad instruments contain sustained melodic pad audios that are typically used as underlying texture. Pad instruments can be played in event, chord and loop modes, and are introduced during the detail-craft phase.

Sticky

Sticky instruments contain one shot audios that “stick” closely to the beat, providing a supportive, repeating, syncopated single note phrase that is usually done by a guitar but could be approximated by any sound provided that the notes are relatively short in duration. Sticky instruments can be played in event, chord and loop modes, and are introduced during the detail-craft phase.

Stripe

Stripe instruments contain melodic audios that punctuate transitions, highlight important beats, or enhance climactic moments in the music. Stripe instruments can be played in event, chord and loop modes, and are introduced during the detail-craft phase.

Stab

Stab instruments contain short percussive or chordal audios that are often created using synthesizers, electric pianos, or brass instruments. Stab instruments can be played in event, chord and loop modes, and are introduced during the detail-craft phase.

Hook

Hook instruments contain memorable musical phrases or riff audios played by instruments such as guitar, bass, or keyboards. These hooks can serve as the foundation of the song’s melody or provide a catchy motif that recurs throughout the composition. Hook instruments can be played in event, chord and loop modes, and are introduced during the detail-craft phase.

Percussion

Percussion instruments contain audios that consist of rhythmic patterns or sequences of percussion instruments that are often used to add groove, texture, and rhythmic complexity to a track. These instruments typically consist of various percussive elements such as drums, cymbals, shakers, tambourines, congas, bongos, and other percussion instruments. Percussion instruments can be played in event, chord and loop modes, and are introduced during the detail-craft phase.

Transition

Transition instruments contain audios that are used to smoothly move between different sections or parts of a song, scene, or composition. These sounds help to create cohesion and flow within the production, guiding the listener from one part to another and maintaining interest and engagement throughout. Transition-instruments can only be played in event mode and are introduced in the transition-craft phase.

Background

Background instruments contain audio textures that are at least 1 minute (longer than any section). They are used to create an atmospheric backdrop and establish a sense of place, mood, or environment without necessarily being the focal point of the sequence. When chosen, XJ uses a random piece from within the available audio to fill each section when the instrument is chosen and builds in and out of layers of background audio the same way it does perc loops. Backgorund instruments can only be played in loop mode and are introduced in the background-craft phase.

Memes

A meme is a tag that artists apply to programs and instruments in order to guide the choices that XJ makes.

XJ factors in the memes it sees in order to make choices about which programs and instruments will be included in a Segment.

Pick a Marble from the Bag

In order to make random choices based on weighted options, XJ uses a stochastic mechanism called a Marble Bag.

Pick a Marble from the Bag
The example figure to the left represents a choice between three possible outcomes: Red (R), Green (G), and Yellow (Y). The likelihood of a choice is increased when we add more of that choice’s marbles to the bag. In the following section, we’ll discuss how the presence of different kinds of memes either increases or decreases the chance of a selection, or prevents a particular option from being chosen at all. These are in fact expressed by adding and removing marbles from a virtual bag. For example, to make sure an option is never chosen, we remove all of its marbles from the bag.

XJ’s marble bag is actually divided into phases. When a marble is put into the bag, it is assigned a phase. For example, if the phase 1 bag contains any marbles, we will pick from only the phase 1 bag and skip phases 2 and beyond. This supports functionality such as “XJ always chooses a directly-bound program or instrument when available”

Meme TypeExampleWhen meme matches
Regular MemePEACHESIncrease likelihood to choose content that matches regular memes XJ has already chosen for the segment.
Anti-Meme aka Not-Meme!PEACHESDo not choose this content, if we have already chosen content with the corresponding regular meme. If XJ has already chosen content for the segment having anti-meme !PEACHES, then XJ will not choose content having regular meme PEACHES
Unique-Meme aka Solo-Meme$PEACHESDo not choose this content, if we have already chosen content with this unique-meme. If XJ has already chosen content for the segment having unique-meme $PEACHES, then XJ will not choose any other content having this same unique-meme.
Number-Meme5PEACHESDo not choose this content, if we have already chosen content with a different number of the same meme. If XJ has already chosen content for the segment having number-meme 5PEACHES, then XJ will not choose content with number-meme 7PEACHES.
Strong-MemePEACHES!Only choose content if we have already chosen content with the corresponding regular meme. Only if XJ has already chosen content for the segment having regular meme PEACHES will XJ consider choosing content with strong meme PEACHES!

A set of memes is referred to as a meme theorem (a.k.a. meme stack) and a meme theorem is valid if all the memes in the set are compatible. For example, the set of (PEACHES,!PEACHES) is invalid because you cannot simultaneously allow and deny PEACHES. As XJ crafts a segment, it adds content one at a time. First a Macro-type program, then a Main-type program, then a Beat-type program, then Instruments and other programs. As each piece of content is added, XJ checks the memes associated with that content and adds these memes to the segment. If the memes of a new piece of content would create an invalid theorem when added to the segment, XJ will not add that content at all. Ultimately, the memes of any given segment should add up to a valid theorem.

Note: Strong memes are not added to the stack.

Meme Taxonomy

A template configuration has a field called memeTaxonomy which defines the taxonomy of memes.

For example, this might look like

memeTaxonomy = [

  {"memes":["RED","GREEN","BLUE"],"name":"COLOR"},

  {"memes":["WINTER","SPRING","SUMMER","FALL"],"name":"SEASON"}

]

That would tell XJ about the existence of a meme category called COLOR with values RED, GREEN, and BLUE, and a meme category called SEASON with values WINTER, SPRING, SUMMER, and FALL.

For example, after content having RED is chosen, we can choose nothing with GREEN or BLUE.

*NOTE: Use a semicolon to separate the categories. Each category has a comma-separated list of memes.

Chord Interpretation

Chord Interpretation

Using 12-tone equal-tempered octaves.

ChordSynonyms
CC maj, C major, CM
C 7/9/13C dom 7/9/13, C dominant 7/9/13, C 7/6/9, C dom7 6/9, C dominant 7 6/9
C +7C aug7, C augmented7, C 7#5
C dimC diminished, C°
C 7#9C dom7#9, C dominant, 7#9
C 5(N/A)
C 6/9C maj6/9, C major6/9, CM6/9, CM6add9, C 6add9, C maj6add9, C major6add9
C -13C min13, C minor 13, Cm13, C -7/13, C min7/13, C minor7/13
C -7/11C min7/11, C minor7/11, Cm7/11, Cm11, C -11, C min11, C minor11, C mi11, C mi7/11
C maj7#11C major7#11, CM7#11, C∆#11
C -6C min6, C minor6, Cm6, C mi6
ChordSynonyms
C -C min, C minor, Cm, C mi
C 7/13C dom 7/13, C dominant 7/13, C 7/6, C dom7/6, C dominant 7/6, C 13
C 7C dom7, C dominant 7, C dominant
C 7b9C dom7b9, C dominant 7b9
C 7#9b13C dom7#9b13, C dominant, 7#9b13
C dim7C diminished7, C°7
C add9Cmaj add9, C major add9, CMadd2, CMadd9, C add2, C maj add2, C major add2
C -7b5/11C -7b5/11, C minor7b5/11, Cm7b5/11, C Ø11, C half dim 11, C half diminished 11
C min/maj7C -maj7, C minor/maj7, CmM7, Cmin∆, C-∆, C mi/maj7, C minor/major7, C minor major 7
C 7sus4C dom7sus4, C dominant 7sus4, C 7sus
C -b6C minb6, C minor b6, Cmb6
ChordSynonyms
C maj7C major7, CM7, C∆
C -7b5C min7b5, C minor7b5, Cm7b5, CØ, C half dim, C half diminished
C 6C maj6, C major6, CM6
C 7b9b13C dom7b9b13, C dominant 7b9b13
C 7/9b13C dom7/9b13, C dominant 7/9b13
C sus4C sus
C add4C maj add4, C major add4, CMadd4, CMadd11, C add11, C maj add11, C major add11
C 7/9C dom7/9, C dominant 7/9, C 9, C7add9
C aug maj7C +Maj7, C augmented major 7, C+M7, CaugM7, Caug∆, C+∆, C maj7#5, C major7#5, C+♮7, C∆#5
C dim maj7C diminished major 7, CdimM7, Cdim♮7, C°M7
ChordSynonyms
C -7C min7, C minor7, Cm7, C mi7
C 7add4C dom7add4, C dominant 7add4, C 7/11, C 11, C dom7/11, C dominant7/11
C +C aug, C augmented
C #5C 7b9/13, C dom7b9/13, C dominant 7 b9/13
C sus2C 5add9, C 5add2
C maj7/9C major7/9, CM7/9, CM7add9, C∆9, C maj7add9, C major7add9, C maj7add2, C major7add2
C 7#11C dom7#11, C dominant 7#11, C 7b5, C dom7b5, C dominant 7b5
C -7/9C min7/9, C minor7/9, Cm7/9, Cm7add9, C min7add9, C minor7add9, C mi7/9, C mi7add9, C -7add9
C maj7/13C major7/13, CM7/13, C∆13

Fabrication

XJ music fabrication is the command center of the XJ music workstation, offering precise control over playback of your compositions.

Segment Model

During fabrication, XJ constructs a Chain made of a series of Segments. Each Segment is a self-contained unit of music that can be played back in real-time or recorded to a file. Segments can be combined to create more complex compositions.

XJ music Segment Entity Model XJ music Segment Entity Model

Fabrication Details

Delta Arcs

As segments are fabricated for each main program, intensity is increased as we progress through the main program.

Fabrication Settngs

The fabrication settings can be opened from the top menu or the hamburger icon in the Fabrication tab.

Subsections of Fabrication

Delta Arcs

In the XJ music system, the main program is divided into sequences. Each segment is a musical composition that is based on a sequence.

The delta value of any segment counts from 0 (at the beginning of the main program) incrementing each segment by the total number of beats in that segment. The delta value is used to calculate the relative position of a segment in the main program.

The delta arc value of any segment is the intensity of the segment. The arc value is used to calculate the intensity of the segment in the main program.

Fabrication Settngs

The fabrication settings can be opened from the top menu or the hamburger icon in the Fabrication tab.

Fabrication Dropdown Fabrication Dropdown

The Fabrication Menu is the command center of the XJ music workstation, offering precise control over your compositions. The table below will walk you through each feature, ensuring you make the most of the creative possibilities at your fingertips.

Fabrication Menu SettingsDescription
Input Template IDInput the specific template ID to instruct the workstation on which template to play.
Output ModePlayback Mode plays the selected Template back in real-time. File Mode generates a recording of the Template faster than real time, but without playback.
Output File ModeControls how outputs in File Mode are divided. Continuous outputs one file, while Segment, Macro, and Main output files are based on the lengths of each of the three options.
Output File SecondsSets the length of a file generated using the Continuous file mode.
Output File Path PrefixThe location where files will be saved.
Output Frame RateThe frame rate at which sounds associated with the Template will be used or converted to before playback or output.
Output ChannelsThe number of channels utilized in playback and output.
Craft Ahead SecondsThe amount of time XJ will Craft ahead in seconds.
Dub Ahead SecondsThe amount of time XJ will Dub ahead in seconds.
Ship Ahead SecondsThe amount of time XJ will Ship ahead in seconds.
Content Storage Path PrefixSets the location where sound files associated with the chosen Template will be saved and preloaded from.
Timeline Segment View LimitLimits segments available to view in the timeline to this value.

Templates

Templates are packaged compilations of Libraries, potentially highlighting specific Instruments and Programs that can be previewed and/or broadcast.

Each template contains a configuration, which may affect the music when fabricating that template.

Templates Templates

Click on the name of a Template to edit that template.

Pro Tip

The buttons on each row can be used to Edit, Duplicate, or Destroy that Template. Templates Buttons Templates Buttons

Subsections of Templates

Binding Template Content

The Bindings menu allows you to specify which Library, Program, or Instrument can be utilized in a Template. When creating a Template it is important to Bind all of the necessary Libraries, including Main and Macro Programs, Beat Programs, Detail Programs, and Instruments.

Binding Template Content Binding Template Content

Configuration of Templates

Each Template contains a Template Configuration, a set of values and definitions artists provide to XJ in addition to their chosen Bindings.

Configuration of Templates Configuration of Templates

The Template Configuration menu is accessed by clicking the gear icon in the middle of the Template header.

Template Configuration ValuesDescription
backgroundLayerMax/backgroundLayerMinThe maximum and minimum number of background Ambience Loop events selected
bufferAheadSeconds/bufferBeforeSecondsThe amount of seconds that the Template will buffer ahead and before*
choiceMuteProbabilityInstrumentTypeThe chance that the Instrument type will be randomly muted in a sequence, from 0.0-1.0 (0% to 100%)
deltaArcBeatLayersIncomingThe number of Beat Layers being input into the Delta Arc function
deltaArcBeatLayersToPrioritizeThe Events in the Sequence to be prioritized in the Delta Arc function
deltaArcDetailLayersIncomingThe number of Detail Layers being input into the Delta Arc function
deltaArcEnabledEnables or disables the Delta Arc function
densityCeiling/densityFloorThe upper and lower limits of Sequence Density (0.0-1.0)
detailLayerOrderThe order in which Instrument types are prioritized
dubMasterVolumeInstrumentTypeThe master volume of an Instrument type
eventNamesLarge/eventNamesMedium/eventNamesSmallDefines the naming convention for Event sizes
instrumentTypesForAudioLengthFinalizationDetermines which Instrument types are muted when another instance of itself plays or the sequence ends
instrumentTypesForInversionSeekingDetermines which Instrument types are able to have their chords inverted
mainProgramLengthMaxDeltaSets the length of Main Program as they relate to Delta Arcs
memeTaxonomyThe words or phrases XJ will define as Memes (Meme) and the categories that Memes fall into (Category)
mixerHighpassThresholdHz/mixerLowpassThresholdHzThe upper and lower thresholds for the High Pass and Low Pass EQs
outputChannelsThe number of output channels
outputContainerDefines the output container used, e.g ‘OGG’
outputFrameRateThe output frame rate
outputSampleBitsThe output bit-depth
percLoopLayerMax/percLoopLayerMinThe maximum or minimum amount of Percussion Loop Layers that will play in the Chain
stickyBunEnabledEnables or disables the Sticky Buns function
transitionLayerMax/transitionLayerMinThe maximum or minimum amount of Transition Layers that will play in the Chain
vmResourceLimitCpu* it isn’t recommended that users make changes to this setting.
vmResourceLimitMemoryGb* it isn’t recommended that users make changes to this setting.
vmResourceRequestCpu* it isn’t recommended that users make changes to this setting.
vmResourceRequestMemoryGb* it isn’t recommended that users make changes to this setting.

Dubbing of Output Audio

We are still working with the original simple XJ audio mixer, to combine all source audio into the final output audio. Following is the design for our v0.7 Mixer.

Dubbing of Output Audio Dubbing of Output Audio

  1. Mix each Layer from arranged Instrument Audio sources

Dubbing Step 1 Dubbing Step 1

  1. Mix Layers into Segment

Dubbing Step 2 Dubbing Step 2

  1. Add Segments for Streaming

Subbing Step 3 Subbing Step 3

Ship Keys

Chains are shipped with unique identifiers called keys. Fabrication of Segments

XJ is essentially a traditional sampler-sequencer,[1] extended with new generative features.

Artists create a Template (Libraries of Programs, Instruments, and their Recorded Audio).

XJ fabricates a continuous series of audio Segments.

For each Segment, XJ chooses and arranges instrument audio, then modulates sources and mixes output audio.