Resource#

Sacrifice Harmonic Series#

In the chromatic scale, as it exists within the context of equal temperament, none of the 11 notes (beyond the root) are perfectly tuned. Equal temperament deliberately compromises the tuning of all intervals to ensure that music can be transposed and modulated freely without sounding dissonant.

However, in just intonation, a tuning system based on the natural harmonic series, certain intervals are perfectly tuned because they derive directly from simple whole-number frequency ratios. Here’s a breakdown:

Perfectly Tuned Intervals in Just Intonation:#

  1. Unison (1:1) – The root itself is perfectly in tune.

  2. Perfect Fifth (3:2) – One of the most consonant intervals, found naturally in the harmonic series.

  3. Perfect Fourth (4:3) – Another consonant and naturally occurring interval.

  4. Major Third (5:4) – Found in the harmonic series, though often subtly different from the tempered version.

  5. Minor Third (6:5) – Found in the harmonic series, distinct from the tempered version.

  6. Major Sixth (5:3) – Naturally occurring in the harmonic series.

  7. Minor Sixth (8:5) – A natural interval derived from harmonic relationships.

What Happens in Equal Temperament:#

  • All intervals are slightly “tempered” (adjusted) to allow every semitone to be spaced equally, enabling modulation to all 12 keys. This means that even the perfect fifth is slightly flattened and the major third is slightly sharp compared to their just intonation counterparts.

Which Notes in the Chromatic Scale Are Perfect in Just Intonation?#

In a harmonic series context (rooted in one pitch, like C), notes derived directly from simple ratios to the fundamental frequency would be considered “perfect”:

  • G (Perfect Fifth)

  • F (Perfect Fourth)

  • E (Major Third)

  • A (Major Sixth)

  • D (Major Second, derived from 9:8 in some systems)

These relationships depend heavily on the harmonic context, so while they are “perfect” in one tuning system (just intonation), they don’t remain so universally.

Conclusion:#

If you demand no tempering at all, you leave the realm of equal temperament and must specify a harmonic context, such as just intonation. Within equal temperament, none of the intervals are perfectly tuned. In just intonation, intervals derived from simple whole-number ratios to the root can be considered “perfect.”

Temperament, Chromaticism, Diatonicism, Modes#

You’re absolutely right to question this—there’s a nuance here that can be easily overlooked. Let’s break it down.

Is the Fifth Always Perfect?#

The perfect fifth is functionally perfect in most tuning systems because it’s so consonant to our ears. However, whether it’s exactly perfect depends on the tuning system:

1. In Just Intonation#

  • The perfect fifth is tuned to a 3:2 frequency ratio.

  • This is a mathematically exact, “perfect” interval. It resonates beautifully because it’s derived from the harmonic series (the third overtone).

  • In this sense, the fifth is truly perfect when tuned this way.

2. In Equal Temperament#

  • The perfect fifth is slightly flattened compared to its just intonation version.

  • Specifically, it’s off by about 2 cents (1/50th of a semitone).

  • This difference is small enough that it’s hard to hear, and it’s generally considered “close enough” to perfect for practical purposes.

Why Flatten the Fifth in Equal Temperament?#

Equal temperament sacrifices the purity of natural harmonic ratios (like 3:2 for the fifth) to divide the octave into 12 equal semitones. This ensures that:

  • You can modulate to any key.

  • Every interval is equally “in tune” (or equally “out of tune,” depending on perspective).

Without this flattening, the tuning would drift as you moved through different keys.

Conclusion#

The fifth is not perfectly perfect in equal temperament, though it’s close enough to function as a “perfect fifth” musically. In just intonation, it’s exactly perfect (3:2). If you’re thinking in terms of pure tuning, the fifth stands out as one of the most consonant and mathematically exact intervals in music.

Hide code cell source
import numpy as np
import matplotlib.pyplot as plt
import networkx as nx

# Define the neural network structure
def define_layers():
    return {
        # Divine and narrative framework in the film
        'World': [
            'Cosmos',  # Guido’s grand, universal sense of play and creativity
            'Earth',  # The tangible and oppressive reality of the Holocaust
            'Life',  # The stakes of survival and human connection
            'Il Sacrificio',  # Guido’s ultimate sacrifice
            'Mia Storia',  # Giosuè’s personal narrative, shaped by his father
            'Dono Per Me'  # The "gift" of innocence and joy given by Guido
        ],
        # Perception and filtering of reality
        'Perception': ['Che Mio'],  # How Giosuè interprets his father’s actions and words
        # Agency and Guido’s defining traits
        'Agency': ['Cheerfulness', 'Optimism'],  # Guido’s tools for shaping the narrative
        # Generativity and legacy
        'Generativity': [
            'Anarchy',  # Guido’s rebellion against oppressive reality
            'Oligarchy',  # The systemic constraints he navigates
            'Padre Fece'  # The actions and sacrifices Guido made for his son
        ],
        # Physical realities and their interplay
        'Physicality': [
            'Dynamic',  # Guido’s improvisational actions, like creating the “game”
            'Partisan',  # The direct oppression he faces
            'Common Wealth',  # Shared humanity and joy despite hardship
            'Non-Partisan',  # Universal themes transcending sides
            'Static'  # The immovable, tragic finality of the Holocaust
        ]
    }

# Assign colors to nodes
def assign_colors(node, layer):
    if node == 'Che Mio':
        return 'yellow'  # Perception as the interpretive bridge
    if layer == 'World' and node == 'Dono Per Me':
        return 'paleturquoise'  # Optimism and the "gift"
    if layer == 'World' and node == 'Mia Storia':
        return 'lightgreen'  # Harmony and legacy
    if layer == 'World' and node in ['Cosmos', 'Earth']:
        return 'lightgray'  # Context of divine and tangible
    elif layer == 'Agency' and node == 'Optimism':
        return 'paleturquoise'  # Guido’s defining hope
    elif layer == 'Generativity':
        if node == 'Padre Fece':
            return 'paleturquoise'  # Guido’s ultimate acts of selflessness
        elif node == 'Oligarchy':
            return 'lightgreen'  # Navigating systemic structures
        elif node == 'Anarchy':
            return 'lightsalmon'  # Rebellion and creativity
    elif layer == 'Physicality':
        if node == 'Static':
            return 'paleturquoise'  # The unchanging, tragic realities
        elif node in ['Non-Partisan', 'Common Wealth', 'Partisan']:
            return 'lightgreen'  # Shared humanity and resilience
        elif node == 'Dynamic':
            return 'lightsalmon'  # Guido’s improvisation and vitality
    return 'lightsalmon'  # Default color for tension or conflict

# Calculate positions for nodes
def calculate_positions(layer, center_x, offset):
    layer_size = len(layer)
    start_y = -(layer_size - 1) / 2  # Center the layer vertically
    return [(center_x + offset, start_y + i) for i in range(layer_size)]

# Create and visualize the neural network graph
def visualize_nn():
    layers = define_layers()
    G = nx.DiGraph()
    pos = {}
    node_colors = []
    center_x = 0  # Align nodes horizontally

    # Add nodes and assign positions
    for i, (layer_name, nodes) in enumerate(layers.items()):
        y_positions = calculate_positions(nodes, center_x, offset=-len(layers) + i + 1)
        for node, position in zip(nodes, y_positions):
            G.add_node(node, layer=layer_name)
            pos[node] = position
            node_colors.append(assign_colors(node, layer_name))

    # Add edges (without weights)
    for layer_pair in [
        ('World', 'Perception'),  # Giosuè interprets the "World" through "Che Mio"
        ('Perception', 'Agency'),  # Guido’s cheerfulness shapes Giosuè’s perception
        ('Agency', 'Generativity'),  # Guido’s optimism drives his generative actions
        ('Generativity', 'Physicality')  # His legacy plays out in the physical world
    ]:
        source_layer, target_layer = layer_pair
        for source in layers[source_layer]:
            for target in layers[target_layer]:
                G.add_edge(source, target)

    # Draw the graph
    plt.figure(figsize=(14, 10))
    nx.draw(
        G, pos, with_labels=True, node_color=node_colors, edge_color='gray',
        node_size=3000, font_size=10, connectionstyle="arc3,rad=0.1"
    )
    plt.title("Questa è la mia storia: Vita è Bella", fontsize=15)
    plt.show()

# Run the visualization
visualize_nn()
../../_images/6e9a6e47eafe4cc0bd8602f59d5c9e4c6eb989e5a17b71fbd88f7fb9eb54b416.png
../../_images/blanche.png

Fig. 20 In the 2006 movie Apocalypto, a solar eclipse occurs while Jaguar Paw is on the altar. The Maya interpret the eclipse as a sign that the gods are content and will spare the remaining captives. Source: Search Labs | AI Overview#