//9 has graphics

//When using flood-fill in a graphic
//element, you probably want to
//convert it to a bitmap using the
//feature in the <CTRL-r> menu.

     <1>/* Graphics Not Rendered in HTML */


     <2>/* Graphics Not Rendered in HTML */


F64 t0 = Beat;

U0 DrawIt(CTask *task,CDC *dc)
{
    F64 dt = Beat - t0;

    dc->flags |= DCF_TRANSFORMATION;
    Mat4x4RotZ(dc->r, 0.25 * Sin(2 * dt));
    Mat4x4Scale(dc->r, 1.5 + 0.5 * Sin(dt / 3));
    DCMat4x4Set(dc, dc->r);
    if (ToI64(dt) & 1)
        Sprite3B(dc, 12.0 * dt % task->pix_width, 20, 0, <1>);
    else
        Sprite3B(dc, 12.0 * dt % task->pix_width, 20, 0, <2>);
}

U0 Song()
{
    SettingsPush; //See SettingsPush
    Fs->text_attr   = GREEN << 4 + YELLOW;
    Fs->draw_it     = &DrawIt;
    Fs->task_end_cb = &SoundTaskEndCB;

    MusicSettingsReset;
    music.tempo = 3.5;
    try
    {
        while (!KeyScan)
        {
            t0 = Beat;
            Play("5qG4G5D4B5sDCDCqRCG",
                    "$CL$$BG,9$\n\n$BG,2$$CM-LE,3$$FG,14$Baa, \0"
                    "the \0grass \0is \0green.\n\0 \0 \0 \0 \0 \0 \0");
            Play("5G4G5D4B5sDCDCqRCG",
                        "This \0must \0be \0a \0dream.\n\0 \0 \0 \0 \0 \0 \0");

            Play("5EeGF4qBB5D4AeGGqR",
                        "Thanks, \0my \0 \0shep\0herd.  \0You \0are \0good.\n\0 \0 \0");

            Play("5EeGF4qBB5D4AeGGqR",
                        "Thanks, \0my \0 \0shep\0herd.  \0You \0are \0good.\n\0 \0 \0");
        }
    }
    catch
        PutExcept;
    SettingsPop;
}

Song;