@@ -54,24 +54,48 @@ type videoCol struct {
5454// Global variables definitions
5555
5656var (
57- version = "1.9 .0"
58- date = "2023-03 -16"
57+ version = "1.10 .0"
58+ date = "2023-05 -16"
5959
6060 encodedExt string = _encodedExt
6161 totalOrg int64 = 1
6262 totalNew int64 = 1
6363 vidCol videoCol
6464 workDirs []string
6565 cutOps string = ""
66+
67+ transpFrom , transpTo string
6668)
6769
70+ var pitch = map [string ]string {
71+ "C" : "261.63" ,
72+ "Db" : "277.18" ,
73+ "D" : "293.66" ,
74+ "Eb" : "311.13" ,
75+ "E" : "329.63" ,
76+ "F" : "349.23" ,
77+ "Gb" : "369.99" ,
78+ "G" : "392.00" ,
79+ "Ab" : "415.30" ,
80+ "A" : "440.00" ,
81+ "Bb" : "466.16" ,
82+ "B" : "493.88" ,
83+ }
84+
85+ func init () {
86+ pitch ["C#" ] = pitch ["Db" ]
87+ pitch ["D#" ] = pitch ["Eb" ]
88+ pitch ["F#" ] = pitch ["Gb" ]
89+ pitch ["G#" ] = pitch ["Ab" ]
90+ pitch ["A#" ] = pitch ["Bb" ]
91+ }
92+
6893////////////////////////////////////////////////////////////////////////////
6994// Main
7095
7196func main () {
72- flag .Usage = Usage
73- flag .Parse ()
7497
98+ // == Commandline handling
7599 if Opts .PrintV {
76100 fmt .Printf ("%s version %s built on %s\n \n " , progname , version , date )
77101
@@ -154,8 +178,24 @@ cut_ok:
154178 if len (Opts .Directory )+ len (Opts .File ) < 1 {
155179 Usage ()
156180 }
157- getDefault ()
158- //fmt.Fprintf(os.Stderr, "Defaults: '%+v'\n", Defaults)
181+ if len (Opts .TranspFrom ) != 0 && len (Opts .TranspTo ) == 0 ||
182+ len (Opts .TranspFrom ) == 0 && len (Opts .TranspTo ) != 0 {
183+ fmt .Fprintf (os .Stderr , "Signature transposition needs transpose keys for both from and to\n " )
184+ os .Exit (1 )
185+ }
186+ if len (Opts .TranspFrom ) != 0 {
187+ var ok bool
188+ if transpFrom , ok = pitch [Opts .TranspFrom ]; ! ok {
189+ fmt .Fprintf (os .Stderr , "Unknown key signature to transpose from\n " )
190+ os .Exit (1 )
191+ }
192+ if transpTo , ok = pitch [Opts .TranspTo ]; ! ok {
193+ fmt .Fprintf (os .Stderr , "Unknown key signature to transpose to\n " )
194+ os .Exit (1 )
195+ }
196+ fmt .Fprintf (os .Stderr , "Transposing from '%s' (%s) to '%s' (%s)\n " ,
197+ Opts .TranspFrom , transpFrom , Opts .TranspTo , transpTo )
198+ }
159199
160200 encodedExt = Opts .Ext
161201 // Sanity check
@@ -359,7 +399,7 @@ func transcodeFile(inputName string) {
359399 debug (fsinfo , 4 )
360400 /*
361401
362- Cases when `-map`s are necessary
402+ Cases when `-map`s are necessary to deal with here
363403
364404 - more than one audio stream, and we pick eng stream only
365405 - more than one subtitle stream, and
@@ -395,6 +435,12 @@ func transcodeFile(inputName string) {
395435 args := []string {"-i" , inputName }
396436 args = append (args , strings .Fields (Opts .OptExtra )... )
397437 args = encodeParametersS (encodeParametersA (encodeParametersV (args )))
438+ if len (transpFrom ) != 0 {
439+ args = append (args , "-af" )
440+ af := fmt .Sprintf ("atempo=%s/%s,asetrate=44100*%[2]s/%[1]s" ,
441+ transpFrom , transpTo )
442+ args = append (args , af )
443+ }
398444 if Opts .Force {
399445 args = append (args , "-y" )
400446 }
@@ -554,6 +600,7 @@ func encodeParametersA(args []string) []string {
554600 if Opts .A2Opus {
555601 Opts .AES = "libopus"
556602 }
603+ //fmt.Printf("] %v + AE: '%s' '%s'\n", args, Opts.AES, Opts.ABR)
557604 if Opts .AES != "" {
558605 args = append (args , "-c:a" , Opts .AES )
559606 }
0 commit comments