Outils pour utilisateurs

Outils du site


emulation:sons:spc

SPC

Description

Le format spc est celui des dumps audio de la Super Nintendo. Il est lu par le chipset Sony SPC700, circuit intégré 8 bits pour la gestion du son. Il a été utilisé dans la Super Nintendo (SNES) combiné avec un DSP. Le SPC700 produisait des sons stéréo échantillonnés à 32 kHz.

Script de conversion

Dessous un petit script qui transforme les fichiers spc en flac, il normalise le volume (peak), détecte si le fichier et en stéréo, et tag automatiquement les flac (si les fichiers d'origines le son, voir tag ID666).

spc2flac.sh
#! /bin/bash
# Author : Jocker / Romain BARBAROT
# Dependencies:	-FFMPEG (https://ffmpeg.org/)
#				-espctag (https://sourceforge.net/projects/espctag/)
 
# Directory argument
if [ -d "$1" ]; then
    cd "$1" || exit
fi
 
# Tag questions
echo
echo "Please indicate the tag <date>"
        echo -n " -> "
        read -r year
 
# Test files
LSTSPC=$(ls -- *.SPC *.spc 2> /dev/null)
 
if test -z "$LSTSPC"; then
	echo
	echo "	Failed, no spc files here"
	echo
	exit
fi
 
# Counter set
COUNTER="0"
 
# Grep duration tag, test volume, apply peak normalization, mono or stereo detect, and make FLAC
for audio in *.spc
		do
 
		track=$(($COUNTER+1))			# Track tag
		COUNTER=$track					#
 
		ALBUM=$(espctag -G "$audio" | cut -c14-)
		ARTIST=$(espctag -A "$audio" | cut -c10-)
		SONG=$(espctag -S "$audio" | cut -c14-)
 
		DURATION=$(espctag -L "$audio" | awk '{print $3;}')
		FADING=$(espctag -F "$audio" | awk '{print $4;}')
		SFADING=$(($FADING/1000))
		TDURATION=$(($DURATION+$SFADING))
 
		ffmpeg -i "$audio" -t $TDURATION -af "volumedetect" -vn -sn -dn -f null /dev/null 2> temp											# Test Volume
 
		TESTDB=$(grep "max_volume" temp | awk '{print $5;}')
		if [[ $TESTDB = *"-"* ]]; then
			GREPVOLUME=$(grep "max_volume" temp | sed 's|: -|=|' | awk '{print $4;}' | sed 's|max_volume=||')dB					# Volume normalization variable
		else
			GREPVOLUME="0dB"
		fi
 
		TESTLEFT=$(ffmpeg -i "$audio" -t $TDURATION -map_channel 0.0.0 -f md5 - 2>/dev/null)
		TESTRIGHT=$(ffmpeg -i "$audio" -t $TDURATION -map_channel 0.0.1 -f md5 - 2>/dev/null)
		if [ "$TESTLEFT" = "$TESTRIGHT" ]; then
			CHANNEL="-channel_layout mono"
		fi
 
		ffmpeg -i "$audio"  -t $TDURATION -af "volume=$GREPVOLUME, afade=t=out:st=$DURATION:d=$SFADING" $CHANNEL -acodec flac -compression_level 12 -ar 44100 -metadata track="$track" -metadata album="$ALBUM" -metadata artist="$ARTIST" -metadata title="$SONG" -metadata date="$year" "${audio%.*}".flac		# Make FLAC
 
		#ffmpeg -i "${audio%.*}".flac -af "volumedetect" -vn -sn -dn -f null /dev/null 2> "${audio%.*}".flac.info
done
 
# Clean
rm temp &>/dev/null
 
exit

Références

emulation/sons/spc.txt · Dernière modification: 2019/05/15 06:13 par jocker