Commit 0d271a79 authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab

media: vidtv: fix some notes at the tone generator

The sheet music used to generate the tones had a few
polyphonic notes. Due to that, its conversion to a
tones sequence had a few errors.

Also, due to a bug at the tone generator, it was missing
the pause at the initial compass.

Fix them.

While here, reduce the compass to 100bpm.

The music was converted from a Music XML file using
this small script:

<snip>
my $count = 0;
my $silent = 0;
my $note;
my $octave;
print "\t";
while (<>) {
	$note = $1 if (m,\<step\>(.*)\</step\>,);
	$octave = "_$1" if (m,\<octave\>(.*)\</octave\>,);
	if (m,\<alter\>1\</alter\>,) {
		$note .= "S";
		$sharp = 1;
	}
	if (m,\<rest/\>,) {
		$note = "SILENT";
		$silent = 1;
	}
	if (m,\<duration\>(.*)\</duration\>,) {
		printf "{ NOTE_${note}${octave}, %d},", $1 * 128 / 480;
		$count++;
		if ($silent || $count >= 3) {
			print "\n\t";
			$count = 0;
			$silent = 0;
		} else {
			print " ";
			print " " if (!$sharp);
		}
		$sharp = 0;
		$note = "";
		$octave = "";
	};
};
print "\n";
</snip>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent ab6bad0a
......@@ -78,8 +78,9 @@ struct tone_duration {
int duration;
};
#define COMPASS 120 /* beats per minute (Allegro) */
#define COMPASS 100 /* beats per minute */
static const struct tone_duration beethoven_fur_elise[] = {
{ NOTE_SILENT, 512},
{ NOTE_E_6, 128}, { NOTE_DS_6, 128}, { NOTE_E_6, 128},
{ NOTE_DS_6, 128}, { NOTE_E_6, 128}, { NOTE_B_5, 128},
{ NOTE_D_6, 128}, { NOTE_C_6, 128}, { NOTE_A_3, 128},
......@@ -120,26 +121,27 @@ static const struct tone_duration beethoven_fur_elise[] = {
{ NOTE_E_5, 128}, { NOTE_D_5, 128}, { NOTE_A_3, 128},
{ NOTE_E_4, 128}, { NOTE_A_4, 128}, { NOTE_E_4, 128},
{ NOTE_D_5, 128}, { NOTE_C_5, 128}, { NOTE_E_3, 128},
{ NOTE_E_4, 128}, { NOTE_E_5, 255}, { NOTE_E_6, 128},
{ NOTE_E_5, 128}, { NOTE_E_6, 128}, { NOTE_E_5, 255},
{ NOTE_E_4, 128}, { NOTE_E_5, 128}, { NOTE_E_5, 128},
{ NOTE_E_6, 128}, { NOTE_E_5, 128}, { NOTE_E_6, 128},
{ NOTE_E_5, 128}, { NOTE_E_5, 128}, { NOTE_DS_5, 128},
{ NOTE_E_5, 128}, { NOTE_DS_6, 128}, { NOTE_E_6, 128},
{ NOTE_DS_5, 128}, { NOTE_E_5, 128}, { NOTE_DS_6, 128},
{ NOTE_E_6, 128}, { NOTE_DS_5, 128}, { NOTE_E_5, 128},
{ NOTE_DS_6, 128}, { NOTE_E_6, 128}, { NOTE_DS_6, 128},
{ NOTE_E_6, 128}, { NOTE_DS_6, 128}, { NOTE_E_6, 128},
{ NOTE_B_5, 128}, { NOTE_D_6, 128}, { NOTE_C_6, 128},
{ NOTE_A_3, 128}, { NOTE_E_4, 128}, { NOTE_A_4, 128},
{ NOTE_C_5, 128}, { NOTE_E_5, 128}, { NOTE_A_5, 128},
{ NOTE_E_3, 128}, { NOTE_E_4, 128}, { NOTE_GS_4, 128},
{ NOTE_E_5, 128}, { NOTE_GS_5, 128}, { NOTE_B_5, 128},
{ NOTE_A_3, 128}, { NOTE_E_4, 128}, { NOTE_A_4, 128},
{ NOTE_E_5, 128}, { NOTE_E_6, 128}, { NOTE_DS_6, 128},
{ NOTE_DS_6, 128}, { NOTE_E_6, 128}, { NOTE_B_5, 128},
{ NOTE_D_6, 128}, { NOTE_C_6, 128}, { NOTE_A_3, 128},
{ NOTE_E_4, 128}, { NOTE_A_4, 128}, { NOTE_C_5, 128},
{ NOTE_E_5, 128}, { NOTE_A_5, 128}, { NOTE_E_3, 128},
{ NOTE_E_4, 128}, { NOTE_GS_4, 128}, { NOTE_E_5, 128},
{ NOTE_GS_5, 128}, { NOTE_B_5, 128}, { NOTE_A_3, 128},
{ NOTE_E_4, 128}, { NOTE_A_4, 128}, { NOTE_E_5, 128},
{ NOTE_E_6, 128}, { NOTE_DS_6, 128}, { NOTE_E_6, 128},
{ NOTE_B_5, 128}, { NOTE_D_6, 128}, { NOTE_C_6, 128},
{ NOTE_A_3, 128}, { NOTE_E_4, 128}, { NOTE_A_4, 128},
{ NOTE_C_5, 128}, { NOTE_E_5, 128}, { NOTE_A_5, 128},
{ NOTE_E_3, 128}, { NOTE_E_4, 128}, { NOTE_GS_4, 128},
{ NOTE_E_5, 128}, { NOTE_C_6, 128}, { NOTE_B_5, 128},
{ NOTE_C_5, 255}, { NOTE_C_5, 255}, { NOTE_SILENT, 512},
{ NOTE_DS_6, 128}, { NOTE_E_6, 128}, { NOTE_B_5, 128},
{ NOTE_D_6, 128}, { NOTE_C_6, 128}, { NOTE_A_3, 128},
{ NOTE_E_4, 128}, { NOTE_A_4, 128}, { NOTE_C_5, 128},
{ NOTE_E_5, 128}, { NOTE_A_5, 128}, { NOTE_E_3, 128},
{ NOTE_E_4, 128}, { NOTE_GS_4, 128}, { NOTE_E_5, 128},
{ NOTE_C_6, 128}, { NOTE_B_5, 128}, { NOTE_A_5, 512},
{ NOTE_SILENT, 256},
};
static struct vidtv_access_unit *vidtv_s302m_access_unit_init(struct vidtv_access_unit *head)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment