diff options
| author | Akshay Nair <phenax5@gmail.com> | 2026-06-10 13:56:26 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2026-06-10 13:58:17 +0530 |
| commit | 46e221c28b0dba58156fc17a3c814ce2f72afec6 (patch) | |
| tree | 013e2dc6ff6e3b109594ec69653db832acc632f0 /src | |
| parent | a3a312700c00b85c4f5cfbac7d24dac9a7319bdd (diff) | |
| download | sqlite-creative-coding-46e221c28b0dba58156fc17a3c814ce2f72afec6.tar.gz sqlite-creative-coding-46e221c28b0dba58156fc17a3c814ce2f72afec6.zip | |
Finish super mario theme
Diffstat (limited to 'src')
| -rw-r--r-- | src/supermariobros.audio.sql | 240 |
1 files changed, 214 insertions, 26 deletions
diff --git a/src/supermariobros.audio.sql b/src/supermariobros.audio.sql index 8f592c1..914a1d9 100644 --- a/src/supermariobros.audio.sql +++ b/src/supermariobros.audio.sql @@ -2,34 +2,221 @@ INSERT OR REPLACE INTO audio_tracks (id, sample_rate, format) VALUES ('supermari WITH RECURSIVE audio AS - (SELECT *, 250 AS n, 160 AS gain FROM audio_tracks WHERE id = 'supermariobros'), + (SELECT *, 225 AS beat, 160 AS gain FROM audio_tracks WHERE id = 'supermariobros'), notes AS (SELECT 440.0000 AS A4, - 493.8833 AS B4, 466.1638 AS Bflat4, - 391.9954 AS G4, + 493.8833 AS B4, 261.6256 AS C4, 329.6276 AS E4, + 391.9954 AS G4, + 880.0000 AS A5, 523.2511 AS C5, + 587.3295 AS D5, + 622.2540 AS Dsharp5, + 659.2250 AS E5, + 698.4565 AS F5, + 739.9888 AS Fsharp5, 783.9909 AS G5, - 659.2250 AS E5), + 1760.000 AS A6, + 1046.502 AS C6, + 1318.510 AS E6, + 1396.913 AS F6, + 1567.982 AS G6), melody(m_id, mduration, mnote) AS (SELECT ROW_NUMBER() OVER () as m_id, * FROM (VALUES - (5, (SELECT E5 FROM notes)) , (1, 0), - (5, (SELECT E5 FROM notes)) , (6, 0), - (5, (SELECT E5 FROM notes)) , (6, 0), - (5, (SELECT C5 FROM notes)) , (1, 0), - (5, (SELECT E5 FROM notes)) , (6, 0), - (5, (SELECT G5 FROM notes)) , (17, 0), - (5, (SELECT G4 FROM notes)) , (17, 0), - (5, (SELECT C5 FROM notes)) , (12, 0), - (5, (SELECT G4 FROM notes)) , (10, 0), - (5, (SELECT E4 FROM notes)) , (8, 0), - (5, (SELECT A4 FROM notes)) , (6, 0), - (5, (SELECT B4 FROM notes)) , (5, 0), - (5, (SELECT Bflat4 FROM notes)), (1, 0), - (5, (SELECT A4 FROM notes)) , (12, 0), - -- (5, (SELECT G4 FROM notes)) , (1, 0), + (5, (SELECT E5 FROM notes)) , (1, 0), + (5, (SELECT E5 FROM notes)) , (6, 0), + (5, (SELECT E5 FROM notes)) , (6, 0), + (5, (SELECT C5 FROM notes)) , (1, 0), + (5, (SELECT E5 FROM notes)) , (6, 0), + (5, (SELECT G5 FROM notes)) , (17, 0), + (5, (SELECT G4 FROM notes)) , (17, 0), + -- + (5, (SELECT C5 FROM notes)) , (12, 0), + (5, (SELECT G4 FROM notes)) , (10, 0), + (5, (SELECT E4 FROM notes)) , (7, 0), + (5, (SELECT A4 FROM notes)) , (6, 0), + (5, (SELECT B4 FROM notes)) , (5, 0), + (5, (SELECT Bflat4 FROM notes)) , (1, 0), + (5, (SELECT A4 FROM notes)) , (6, 0), + (5, (SELECT G4 FROM notes)) , (2, 0), + (5, (SELECT E5 FROM notes)) , (2, 0), + (5, (SELECT G5 FROM notes)) , (2, 0), + (5, (SELECT A5 FROM notes)) , (6, 0), + (5, (SELECT F5 FROM notes)) , (1, 0), + (5, (SELECT G5 FROM notes)) , (5, 0), + (5, (SELECT E5 FROM notes)) , (8, 0), + (5, (SELECT C5 FROM notes)) , (1, 0), + (5, (SELECT D5 FROM notes)) , (1, 0), + (5, (SELECT B4 FROM notes)) , (12, 0), + -- + (5, (SELECT C5 FROM notes)) , (12, 0), + (5, (SELECT G4 FROM notes)) , (10, 0), + (5, (SELECT E4 FROM notes)) , (7, 0), + (5, (SELECT A4 FROM notes)) , (6, 0), + (5, (SELECT B4 FROM notes)) , (5, 0), + (5, (SELECT Bflat4 FROM notes)) , (1, 0), + (5, (SELECT A4 FROM notes)) , (6, 0), + (5, (SELECT G4 FROM notes)) , (2, 0), + (5, (SELECT E5 FROM notes)) , (2, 0), + (5, (SELECT G5 FROM notes)) , (2, 0), + (5, (SELECT A5 FROM notes)) , (6, 0), + (5, (SELECT F5 FROM notes)) , (1, 0), + (5, (SELECT G5 FROM notes)) , (5, 0), + (5, (SELECT E5 FROM notes)) , (8, 0), + (5, (SELECT C5 FROM notes)) , (1, 0), + (5, (SELECT D5 FROM notes)) , (1, 0), + (5, (SELECT B4 FROM notes)) , (24, 0), + -- + (5, (SELECT G5 FROM notes)) , (1, 0), + (5, (SELECT Fsharp5 FROM notes)), (1, 0), + (5, (SELECT F5 FROM notes)) , (1, 0), + (5, (SELECT D5 FROM notes)) , (8, 0), + (5, (SELECT E5 FROM notes)) , (6, 0), + (5, (SELECT G4 FROM notes)) , (1, 0), + (5, (SELECT A4 FROM notes)) , (1, 0), + (5, (SELECT C5 FROM notes)) , (6, 0), + (5, (SELECT A4 FROM notes)) , (1, 0), + (5, (SELECT C5 FROM notes)) , (1, 0), + (5, (SELECT D5 FROM notes)) , (12, 0), + -- + (5, (SELECT G5 FROM notes)) , (1, 0), + (5, (SELECT Fsharp5 FROM notes)), (1, 0), + (5, (SELECT F5 FROM notes)) , (1, 0), + (5, (SELECT D5 FROM notes)) , (8, 0), + (5, (SELECT E5 FROM notes)) , (6, 0), + (5, (SELECT C6 FROM notes)) , (4, 0), + (5, (SELECT C6 FROM notes)) , (1, 0), + (5, (SELECT C6 FROM notes)) , (36, 0), + -- + (5, (SELECT G5 FROM notes)) , (1, 0), + (5, (SELECT Fsharp5 FROM notes)), (1, 0), + (5, (SELECT F5 FROM notes)) , (1, 0), + (5, (SELECT D5 FROM notes)) , (8, 0), + (5, (SELECT E5 FROM notes)) , (6, 0), + (5, (SELECT G4 FROM notes)) , (1, 0), + (5, (SELECT A4 FROM notes)) , (1, 0), + (5, (SELECT C5 FROM notes)) , (6, 0), + (5, (SELECT A4 FROM notes)) , (1, 0), + (5, (SELECT C5 FROM notes)) , (1, 0), + (5, (SELECT D5 FROM notes)) , (12, 0), + -- + (5, (SELECT Dsharp5 FROM notes)), (12, 0), + (5, (SELECT D5 FROM notes)) , (12, 0), + (5, (SELECT C5 FROM notes)) , (36, 0), + -- + (5, (SELECT C5 FROM notes)) , (1, 0), + (5, (SELECT C5 FROM notes)) , (6, 0), + (5, (SELECT C5 FROM notes)) , (6, 0), + (5, (SELECT C5 FROM notes)) , (1, 0), + (5, (SELECT D5 FROM notes)) , (6, 0), + (5, (SELECT E5 FROM notes)) , (1, 0), + (5, (SELECT C5 FROM notes)) , (6, 0), + (5, (SELECT A4 FROM notes)) , (1, 0), + (5, (SELECT G4 FROM notes)) , (17, 0), + -- + (5, (SELECT C5 FROM notes)) , (1, 0), + (5, (SELECT C5 FROM notes)) , (6, 0), + (5, (SELECT C5 FROM notes)) , (6, 0), + (5, (SELECT C5 FROM notes)) , (1, 0), + (5, (SELECT D5 FROM notes)) , (1, 0), + (5, (SELECT E5 FROM notes)) , (40, 0), + -- + (5, (SELECT C5 FROM notes)) , (1, 0), + (5, (SELECT C5 FROM notes)) , (6, 0), + (5, (SELECT C5 FROM notes)) , (6, 0), + (5, (SELECT C5 FROM notes)) , (1, 0), + (5, (SELECT D5 FROM notes)) , (6, 0), + (5, (SELECT E5 FROM notes)) , (1, 0), + (5, (SELECT C5 FROM notes)) , (6, 0), + (5, (SELECT A4 FROM notes)) , (1, 0), + (5, (SELECT G4 FROM notes)) , (17, 0), + -- + (5, (SELECT E5 FROM notes)) , (1, 0), + (5, (SELECT E5 FROM notes)) , (6, 0), + (5, (SELECT E5 FROM notes)) , (6, 0), + (5, (SELECT C5 FROM notes)) , (1, 0), + (5, (SELECT E5 FROM notes)) , (6, 0), + (5, (SELECT G5 FROM notes)) , (17, 0), + (5, (SELECT G4 FROM notes)) , (17, 0), + -- + (5, (SELECT C5 FROM notes)) , (12, 0), + (5, (SELECT G4 FROM notes)) , (10, 0), + (5, (SELECT E4 FROM notes)) , (8, 0), + (5, (SELECT A4 FROM notes)) , (6, 0), + (5, (SELECT B4 FROM notes)) , (5, 0), + (5, (SELECT Bflat4 FROM notes)) , (1, 0), + (5, (SELECT A4 FROM notes)) , (6, 0), + (5, (SELECT G4 FROM notes)) , (2, 0), + (5, (SELECT E5 FROM notes)) , (2, 0), + (5, (SELECT G5 FROM notes)) , (2, 0), + (5, (SELECT A5 FROM notes)) , (6, 0), + (5, (SELECT F5 FROM notes)) , (1, 0), + (5, (SELECT G5 FROM notes)) , (5, 0), + (5, (SELECT E5 FROM notes)) , (8, 0), + (5, (SELECT C5 FROM notes)) , (1, 0), + (5, (SELECT D5 FROM notes)) , (1, 0), + (5, (SELECT B4 FROM notes)) , (12, 0), + -- + (5, (SELECT C5 FROM notes)) , (12, 0), + (5, (SELECT G4 FROM notes)) , (10, 0), + (5, (SELECT E4 FROM notes)) , (8, 0), + (5, (SELECT A4 FROM notes)) , (6, 0), + (5, (SELECT B4 FROM notes)) , (5, 0), + (5, (SELECT Bflat4 FROM notes)) , (1, 0), + (5, (SELECT A4 FROM notes)) , (6, 0), + (5, (SELECT G4 FROM notes)) , (2, 0), + (5, (SELECT E5 FROM notes)) , (2, 0), + (5, (SELECT G5 FROM notes)) , (2, 0), + (5, (SELECT A5 FROM notes)) , (6, 0), + (5, (SELECT F5 FROM notes)) , (1, 0), + (5, (SELECT G5 FROM notes)) , (5, 0), + (5, (SELECT E5 FROM notes)) , (8, 0), + (5, (SELECT C5 FROM notes)) , (1, 0), + (5, (SELECT D5 FROM notes)) , (1, 0), + (5, (SELECT B4 FROM notes)) , (17, 0), + -- + (5, (SELECT E5 FROM notes)) , (0, 0), + (5, (SELECT C5 FROM notes)) , (6, 0), + (5, (SELECT G4 FROM notes)) , (12, 0), + (5, (SELECT G4 FROM notes)) , (6, 0), + (5, (SELECT A4 FROM notes)) , (2, 0), + (5, (SELECT F5 FROM notes)) , (4, 0), + (5, (SELECT F5 FROM notes)) , (2, 0), + (5, (SELECT A4 FROM notes)) , (12, 0), + -- + (5, (SELECT B4 FROM notes)) , (1, 0), + (5, (SELECT A5 FROM notes)) , (3, 0), + (5, (SELECT A5 FROM notes)) , (1, 0), + (5, (SELECT A5 FROM notes)) , (4, 0), + (5, (SELECT G5 FROM notes)) , (1, 0), + (5, (SELECT F5 FROM notes)) , (1, 0), + (5, (SELECT E5 FROM notes)) , (2, 0), + (5, (SELECT C5 FROM notes)) , (6, 0), + (5, (SELECT A4 FROM notes)) , (1, 0), + (5, (SELECT G4 FROM notes)) , (17, 0), + -- + (5, (SELECT E5 FROM notes)) , (0, 0), + (5, (SELECT C5 FROM notes)) , (6, 0), + (5, (SELECT G4 FROM notes)) , (12, 0), + (5, (SELECT G4 FROM notes)) , (6, 0), + (5, (SELECT A4 FROM notes)) , (2, 0), + (5, (SELECT F5 FROM notes)) , (4, 0), + (5, (SELECT F5 FROM notes)) , (2, 0), + (5, (SELECT A4 FROM notes)) , (12, 0), + -- + (5, (SELECT B4 FROM notes)) , (1, 0), + (5, (SELECT F5 FROM notes)) , (3, 0), + (5, (SELECT F5 FROM notes)) , (1, 0), + (5, (SELECT F5 FROM notes)) , (4, 0), + (5, (SELECT E5 FROM notes)) , (1, 0), + (5, (SELECT D5 FROM notes)) , (1, 0), + (5, (SELECT C5 FROM notes)) , (2, 0), + (5, (SELECT G4 FROM notes)) , (6, 0), + (5, (SELECT E4 FROM notes)) , (1, 0), + (5, (SELECT C4 FROM notes)) , (17, 0), + -- (1, 0))), melody_with_offsets(mstart, mend, mnote) AS (SELECT @@ -37,16 +224,17 @@ WITH RECURSIVE SUM(mduration) OVER (ORDER BY m_id) AS mend, mnote FROM melody), - tone(position) AS (SELECT 0 UNION ALL SELECT position + 1 FROM tone, audio WHERE position < (SELECT SUM(mduration) FROM melody) * n), + note_positions(position) AS + (SELECT 0 UNION ALL + SELECT position + 1 FROM note_positions, audio + WHERE position < (SELECT SUM(mduration) FROM melody) * beat), _samples(value, position) AS (SELECT - IFNULL( - (SELECT mnote * position FROM melody_with_offsets - WHERE position BETWEEN IFNULL(mstart, 0) * n AND mend * n - LIMIT 1), - 0) AS value, + IFNULL((SELECT mnote * position FROM melody_with_offsets + WHERE position BETWEEN IFNULL(mstart, 0) * beat AND mend * beat + LIMIT 1), 0) AS value, position - FROM tone, notes, audio), + FROM note_positions, notes, audio), samples(value, position) AS (SELECT MOD(FLOOR(value * 2.0 / sample_rate), 2) * gain, position FROM _samples, audio) |
