diff options
| author | Akshay Nair <phenax5@gmail.com> | 2026-06-10 00:14:34 +0530 |
|---|---|---|
| committer | Akshay Nair <phenax5@gmail.com> | 2026-06-10 00:35:33 +0530 |
| commit | a3a312700c00b85c4f5cfbac7d24dac9a7319bdd (patch) | |
| tree | 9c93bf1f3c90a4b84bb99aaa8bc614fab84334a2 | |
| parent | 133dacf4770c4a77c68caa7a994c76bc2f09c08b (diff) | |
| download | sqlite-creative-coding-a3a312700c00b85c4f5cfbac7d24dac9a7319bdd.tar.gz sqlite-creative-coding-a3a312700c00b85c4f5cfbac7d24dac9a7319bdd.zip | |
Add save to mp3 + update supermariobros theme
Diffstat (limited to '')
| -rwxr-xr-x | audio.sh | 22 | ||||
| -rw-r--r-- | media/supermariobros.mp3 | bin | 0 -> 47565 bytes | |||
| -rw-r--r-- | media/supermariobros.mp4 | bin | 0 -> 26624 bytes | |||
| -rw-r--r-- | src/supermariobros.audio.sql | 76 |
4 files changed, 69 insertions, 29 deletions
@@ -23,6 +23,20 @@ play() { ffplay -f "$format" -ar "$sample_rate" -b:a 128K -ch_layout mono -autoexit - } +to_mp3() { + id="$1" + format="$2" + sample_rate="$3" + ffmpeg -y -f "$format" -ar "$sample_rate" -ch_layout mono -i - -b:a 192k "media/$id.mp3" +} + +to_mp4() { + id="$1" + format="$2" + sample_rate="$3" + ffmpeg -y -f "$format" -ar "$sample_rate" -ch_layout mono -i - -b:a 192k -c:v copy -c:a aac "media/$id.mp4" +} + track_info() { local audio_id="$1" db "SELECT format, sample_rate FROM audio_tracks WHERE id='$audio_id'" @@ -37,4 +51,10 @@ sample_rate="$(echo "$data" | cut -f2)" echo "-----------$data--------" -samples "$AUDIO_TRACK_ID" | to_pcm | play "$format" "$sample_rate" +samples "$AUDIO_TRACK_ID" | to_pcm | \ + tee >(to_mp3 "$AUDIO_TRACK_ID" "$format" "$sample_rate") | \ + tee >(to_mp4 "$AUDIO_TRACK_ID" "$format" "$sample_rate") | \ + play "$format" "$sample_rate" + +echo "" +echo "Done" diff --git a/media/supermariobros.mp3 b/media/supermariobros.mp3 Binary files differnew file mode 100644 index 0000000..2b656f3 --- /dev/null +++ b/media/supermariobros.mp3 diff --git a/media/supermariobros.mp4 b/media/supermariobros.mp4 Binary files differnew file mode 100644 index 0000000..78f741b --- /dev/null +++ b/media/supermariobros.mp4 diff --git a/src/supermariobros.audio.sql b/src/supermariobros.audio.sql index b6ce0a7..8f592c1 100644 --- a/src/supermariobros.audio.sql +++ b/src/supermariobros.audio.sql @@ -1,33 +1,53 @@ INSERT OR REPLACE INTO audio_tracks (id, sample_rate, format) VALUES ('supermariobros', 8000, 'u8') RETURNING id; WITH RECURSIVE - audio AS (SELECT *, 250 AS n, 100 AS total_tones, 160 AS gain FROM audio_tracks WHERE id = 'supermariobros'), - notes AS (SELECT 659.225 AS E5, 523.2511 AS C5, 783.9909 AS G5, 391.9954 AS G4), - tone(position) AS (SELECT 0 UNION ALL SELECT position + 1 FROM tone, audio WHERE position < total_tones * n), - _samples(value, position) AS ( - SELECT - (CASE - WHEN position < 5*n THEN position * E5 - WHEN position < 6*n THEN 0 - WHEN position < 11*n THEN position * E5 - WHEN position < 17*n THEN 0 - WHEN position < 22*n THEN position * E5 - WHEN position < 28*n THEN 0 - WHEN position < (28+5)*n THEN position * C5 - WHEN position < (28+6)*n THEN 0 - WHEN position < (28+11)*n THEN position * E5 - WHEN position < (28+17)*n THEN 0 - WHEN position < (28+22)*n THEN position * G5 - WHEN position < (28+39)*n THEN 0 - WHEN position < (28+39+5)*n THEN position * G4 - ELSE 0 - END) AS value, + audio AS + (SELECT *, 250 AS n, 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, + 261.6256 AS C4, + 329.6276 AS E4, + 523.2511 AS C5, + 783.9909 AS G5, + 659.2250 AS E5), + 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), + (1, 0))), + melody_with_offsets(mstart, mend, mnote) AS + (SELECT + SUM(mduration) OVER (ORDER BY m_id ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) AS mstart, + 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), + _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, position - FROM tone, notes, audio - ), - samples(value, position) AS ( - SELECT MOD(FLOOR(value * 2.0 / sample_rate), 2) * gain, position - FROM _samples, audio - ) --- SELECT value FROM samples ORDER BY position; + FROM tone, notes, audio), + samples(value, position) AS + (SELECT MOD(FLOOR(value * 2.0 / sample_rate), 2) * gain, position + FROM _samples, audio) INSERT INTO audio_track_samples (audio_track_id, value, position) SELECT 'supermariobros', value, position FROM samples ORDER BY position; |
