# Song structure

Use the **song structure editor** to:

* Define the order of sections as **song parts**, eg "AABA" or "verse verse chorus verse"
* Select which **rhythms** (music styles) to use and when
* Adjust the **rhythm parameters** of song parts to introduce dynamics, eg variation, intensity, drums fill, muted instrument, ...

![](https://1057949908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQE7B7yjVY3xzlsorS4-887967055%2Fuploads%2FHIYBUMMZ0XxcCjJzHKMP%2FFullSongStructureEditorText.png?alt=media\&token=5f3090ab-a064-48a6-b5bd-0457a0f6862e)

## Song parts

A **song part** is linked to a parent **section** of the [chord lead sheet](https://jjazzlab.gitbook.io/user-guide/editors/chord-lead-sheet).

**Song parts let you define in which order sections are played, and how**. For example you can have a chord lead sheet with only 2 sections *verse* and *chorus*, but the song will play *verse verse chorus verse chorus*.

A song part has a name, a **rhythm** and a value for each of the [**rhythm parameters**](#rhythm-parameters). Rhythm parameters let you change how the rhythm is played for this song part.

By default the name of the song part is the name of the parent section. If the song part is renamed, the parent section is shown below the name.

{% hint style="info" %}
If some contiguous song parts share the same name, then the name is displayed *only on the first song part and a line is shown* on the contiguous song parts (see image below).

Clicking this line will select all the related song parts.
{% endhint %}

![](https://1057949908-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MQE7B7yjVY3xzlsorS4%2F-MQTBrovbZH8IYkzF7pR%2F-MQTDnDGZicvAu7KM3LR%2FSongParts-SameName.png?alt=media\&token=372a4af8-3924-4f1a-8455-fdb6672704dd)

## Editing

To add a new song part:

* **drag a section** from the chord lead sheet into the song structure editor, or
* right-click menu **Insert**, or
* copy an existing song part: drag it while pressing the ctrl key, use copy & paste, or right-click menu **Duplicate**

Song parts can be reordered by **dragging them using the mouse** (use ctrl+mouse drag to duplicatea song part). Copy/cut/paste commands work as well both on song parts and rhythm parameters.

Edition of song part **name**, **rhythm** and **parameters** can be done directly from the song structure editor using the [mouse](#mouse-shortcuts) or [keyboard shortcuts](#keyboard-shortcuts), or via the [song part editor](#song-part-editor).

{% hint style="success" %}
To edit several song parts or rhythm parameters in one shot:

* select multiple items with **ctrl+click** or **shift-click**
* Do the edit (for example change the rhythm, or increase intensity)

Change is applied to all selected items.
{% endhint %}

Use the popup menu (**right-click** on windows/Linux, **ctrl-click** on Mac) to see commands available for the current selection (song part or rhythm parameter), as shown in the 2 images below.

![Song part popup menu](https://1057949908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQE7B7yjVY3xzlsorS4-887967055%2Fuploads%2FcA4hxxjwuS4TBaagRCLz%2FSongPartPopupMeny.png?alt=media\&token=751bb259-d978-47ba-9610-71f10772f058)

![Rhythm parameter popup menu](https://1057949908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQE7B7yjVY3xzlsorS4-887967055%2Fuploads%2FJwMAWG2y3AcDWQCcwOho%2FRhythmParameterPopupMenu.png?alt=media\&token=b4240912-17a1-449e-a3d5-1541b015a405)

For most of the rhythm parameters, **the easiest way** to edit the value is to **select it** and use the **mouse-wheel**.

Some rhythm parameters have a custom edit dialog, which can be called as shown below.

<figure><img src="https://1057949908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQE7B7yjVY3xzlsorS4-887967055%2Fuploads%2F8ZREWKEUhvHA9MO5aXdF%2F2024-01-05%2011_27_00-JJazzLab%20%204.0.2.png?alt=media&#x26;token=449d335b-85f6-472f-82b7-da921d1965bd" alt=""><figcaption><p>A rhythm parameter with a custom editor</p></figcaption></figure>

{% hint style="success" %}
Copy & paste can be used to easily **duplicate rhythm parameter values**.

Suppose you want to apply the drums transform value from one song part (e.g. ">Open hi-hat" in image above) to other song parts:

* In the song structure editor, select the original rhythm parameter and Copy (ctrl-C)
* Select the same rhythm parameter in other song parts (use ctrl-click or shift-click for multiple selection) then Paste (ctrl-V)
  {% endhint %}

When selecting several contiguous rhythm parameters, you can use the **Adjust values** submenu in the rhythm parameter popup menu to interpolate values between the first and the last selected values. In the example below, we used it to gradually increase the tempo from 100% to 108%.

![](https://1057949908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQE7B7yjVY3xzlsorS4-887967055%2Fuploads%2FSI9evKmNXuVclz81zyKx%2FAdjustRpValues.png?alt=media\&token=e140d1a7-320d-4951-9a5d-2344653a213b)

## Song part editor

Song part editor provides an additional way to edit the selected song part(s).

Use the song part editor to edit rhythm parameters which need user to select (ctrl-click) one or more values from a list, such as the Mute parameter.

<figure><img src="https://1057949908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQE7B7yjVY3xzlsorS4-887967055%2Fuploads%2FifDOGnPFu1H73XUyVoz9%2F2024-01-05%2011_37_05-JJazzLab%20%204.0.2.png?alt=media&#x26;token=d7e2c26a-fcf0-466b-a10d-9f824f2481a9" alt=""><figcaption></figcaption></figure>

## Change rhythm (music style)

Each song part can have its own rhythm.

{% hint style="warning" %}
Midi can only accommodate 16 channels (1 channel per instrument), and many rhythms use 7 or 8 instruments. So in order to have a song with more than 2 rhythms, you need to pick rhythms with few instruments.
{% endhint %}

When a song part is created, JJazzLab selects the last rhythm used in the song for this time signature, or it selects the **default rhythm** for this time signature.

{% hint style="info" %}
You can define the **default rhythm** for each time signature in the **Rhythms** tab of the **Options/Preferences**.
{% endhint %}

To change the rhythm, select a song part and press **R,** or click the rhythm name to open the **rhythm selection dialog**.

![](https://1057949908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQE7B7yjVY3xzlsorS4-887967055%2Fuploads%2FBhnsB6eYIgqkJoSu3egr%2FRhythmSelectionDialog.png?alt=media\&token=9bda7e9d-6b2b-41f8-bad0-39adf68a40a2)

When changing the rhythm, JJazzLab tries to adapt the values of the previous rhythm parameters to the new rhythm parameters.

If you want to remove a rhythm change in the middle of a song, select the song part and use **Remove Rhythm Change** from the song part popup menu.

![](https://1057949908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQE7B7yjVY3xzlsorS4-887967055%2Fuploads%2FHQcJzFwDnMkbuJ0jafcQ%2FRemoveRhythmChange.png?alt=media\&token=3f5396c7-bc4f-4942-b112-613e0f4907d3)

## Rhythm parameters

Rhythm parameters let you adjust how a rhythm (music style) is played for a given song part.

{% hint style="success" %}
Rhythm parameters are a simple & powerful tool to **introduce variations in a backing track**, which make it more fun to play with.
{% endhint %}

JJazzLab lets the developer of a [rhythm engine](https://jjazzlab.gitbook.io/user-guide/rhythm-engines) define custom rhythm parameters. However rhythm engines will often use a common set of standard parameters as described below.

### Variation

A rhythm parameter to indicate which rhythm (style) variation must be used. The [YamJJazz engine](https://jjazzlab.gitbook.io/user-guide/rhythm-engines/yamjjazz-rhythm-engine) rhythms usually have 4 *Main* variations, plus some *Intros*, *Endings*, and *Fills*.

### Intensity

This parameter defines the intensity of the generated backing track.

A rhythm engine might simply increase/decrease the Midi velocity of the backing track notes depending on this parameter, but it could also generate more/less notes, etc.

### Drums Fill

This parameter defines when a drums fill (or break) should be played at the end of the song part (*never*, *always*, *randomly*, ...).

The special *fade\_out* value does not produce a drums fill, instead it gradually decreases the notes velocity until the end of the song part.

### Mute

This parameter is used to mute one of more instruments during this song part. To edit this parameter it's easier to use the [song part editor](#song-part-editor)**.**

### **Marker**

This parameter is useful only if you use substitute chord symbols, as explained [here](https://jjazzlab.gitbook.io/user-guide/chord-lead-sheet#substitute-chord-symbol).

### Tempo factor

Use this parameter to slow down or accelerate the tempo of the song part.

### **Drums transform**

This parameter lets you change some drums notes for the song part.

This is an **easy way to alter the drums track** to introduce some variations in your song.

For example you can make the hi-hat louder, transform the closed hi-hat into ride cymbal, or just add percussions!

![](https://1057949908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQE7B7yjVY3xzlsorS4-887967055%2Fuploads%2FNg1Ce3k0xJNGtvZoX1DQ%2FDrumsTransform.png?alt=media\&token=383cb523-9aa9-4e68-94c6-427c123db536)

### **Custom phrase**

This parameter lets you customize one or more instrument phrases of the song part.\
\
\&#xNAN;*Example: you want to change the bass phrase at the end of the second verse*\
\
Edit the Custom phrase rhythm parameter of the corresponding song part, then edit the Bass track. The default bass phrase will appear in the [notes editor](https://jjazzlab.gitbook.io/user-guide/editors/notes-editor) and you'll be able to change it.\
\
If you want this customized bass phrase to also be used in the last verse of the song, just [copy the rhythm parameter value](#editing) and paste it in the last song part.

![](https://1057949908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQE7B7yjVY3xzlsorS4-887967055%2Fuploads%2FcUi59UxSR59QUmuNkUI9%2F2024-01-05%2011_52_05-Customize%20phrases%20for%20song%20part%20_A_%20-%20bars%201..8.png?alt=media\&token=95ad792e-200d-450a-84f0-29262aa1dea5)

### Track overrides

This parameter lets you use one or more tracks from other rhythms.

*Example: your song uses a 8-beat pop rhythm. You want to spice up the chorus song part and use **Track overrides** to replace the 8-beat original bass line by the bass line from a bossa-nova rhythm.*

<figure><img src="https://1057949908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQE7B7yjVY3xzlsorS4-887967055%2Fuploads%2Ffe278O9If9iA7KzXv6iL%2FTrackOverride.png?alt=media&#x26;token=5b071087-6ed7-47ce-af1a-2b677a06f969" alt=""><figcaption></figcaption></figure>

Other usage examples:

* You like a jazz Yamaha style except the bass line which does not sound good. Use the Track overrides parameter to replace the bass line by [jjSwing](https://jjazzlab.gitbook.io/user-guide/rhythm-engines/jjswing-rhythm-engine)'s realistic walking bass.
* The override rhythm can be the same than the original rhythm. For example this lets you override the piano part by the bass part from the same rhythm, so that the bass line is doubled piano+bass on a given song part.

### Compact / full view

By default only a subset of the rhythm parameters are visible, this is the **compact view**.

Click on the button below or press 'V' to switch between compact and full view.

![](https://1057949908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQE7B7yjVY3xzlsorS4-887967055%2Fuploads%2FhuwXavXwMEPOubD8rhSf%2FCompactView.png?alt=media\&token=fc5992e6-4ab7-4dae-b806-4681911386a6)

The **compact view settings** button, just above the compact view button, lets you choose which rhythm parameters are visible in the compact view. These settings are saved with the song.

<figure><img src="https://1057949908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQE7B7yjVY3xzlsorS4-887967055%2Fuploads%2ForgrFF1MiwsTpkzWuL9s%2F2024-01-05%2022_43_31-Compact%20view%20settings.png?alt=media&#x26;token=2d1cda31-5096-4389-a683-dc1a0f0b822f" alt=""><figcaption><p>Compact view settings</p></figcaption></figure>

As a shortcut, you can directly hide a rhythm parameter (i.e. make it non visible in the compact view) by clicking on the X button in the upper left corner, as shown below.

<figure><img src="https://1057949908-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MQE7B7yjVY3xzlsorS4-887967055%2Fuploads%2F6cKM4sbe69nsCxN3wqvG%2FQuickHideRp.png?alt=media&#x26;token=0dd5e548-06cd-4517-8299-b31b7ab4d00f" alt=""><figcaption></figcaption></figure>

## Mouse shortcuts

<table data-header-hidden><thead><tr><th width="253.33333333333331">Selection</th><th>Mouse</th><th>Action</th></tr></thead><tbody><tr><td>Selection</td><td>Mouse</td><td>Action</td></tr><tr><td>song part, rhythm param.</td><td>click</td><td>select</td></tr><tr><td>song part</td><td>double click</td><td>edit song part name</td></tr><tr><td>song part name</td><td>click</td><td>edit</td></tr><tr><td>rhythm</td><td>click</td><td>select a rhythm</td></tr><tr><td>editor, song part, rhythm param.</td><td>right-click</td><td>open popup menu</td></tr><tr><td>rhythm parameter</td><td>double-click</td><td>edit value</td></tr><tr><td>rhythm parameter</td><td>mouse wheel</td><td>change value</td></tr><tr><td>rhythm parameters</td><td>shift+mouse wheel</td><td>make values identical then change value</td></tr><tr><td>editor</td><td>ctrl mouse wheel</td><td>change X zoom factor</td></tr></tbody></table>

## Keyboard shortcuts

{% hint style="info" %}
Many actions are also available via the context menu (right-click on Windows/Linux, ctrl-click on Mac), and when available the associated shortcut is displayed.
{% endhint %}

| Selection                | Key                    | Action                   |
| ------------------------ | ---------------------- | ------------------------ |
| song part, rhythm param. | enter                  | edit song part name      |
| song part, rhythm param. | R                      | select rhythm            |
| song part, rhythm param. | I                      | insert song part         |
| song part, rhythm param. | ctrl-I                 | append song part         |
| song part, rhythm param. | D                      | duplicate song part(s)   |
| song part                | delete                 | delete song part(s)      |
| rhythm parameter         | ctrl-up/down           | next/previous value      |
| rhythm parameter         | Z                      | reset param. value       |
| song part                | ctrl-C/X/V             | copy/cut/paste           |
| editor                   | ctrl-Z/Y               | undo/redo                |
| editor                   | ctrl-F                 | zoom to fit width        |
| editor                   | V                      | compact or full view     |
| editor                   | ctrl mouse-wheel       | zoom in/out horizontally |
| editort                  | ctrl+shift mouse-wheel | zoom in/out vertically   |
