# jm 2013-07-02 # konvertiert mehrere ausgewählte Sound-Objekte # modifiziert werden können die Abtastrate, die Amplitude und die Kanalanzahl (nach Wahl) # Usage: # - Sound-Objekte auswählen # - Skript starten # - gewünschte Modifikationen auswählen beginPause ("Auswahl konvertieren") comment ("Original-Objekte behalten oder durch die konvertierten") comment ("Objekte ersetzen?") boolean ("Originale behalten", 1) comment ("Abtastrate") boolean ("Abtastrate verändern", 0) optionMenu ("Neue Abtastrate", 6) option ("8000") option ("10000") option ("11000") option ("16000") option ("22050") option ("44100") option ("48000") comment ("Lautstärke") boolean ("Lautstärke verändern", 0) optionMenu ("Methode", 1) option ("Signal multiplizieren (Faktor)") option ("Amplitude skalieren (Absoluter Peak)") option ("Intensität skalieren (Durchnittliche Intensität)") real ("Faktor", 2.0) positive ("Absoluter Peak", 0.99) positive ("Durchnittliche Intensität (dB SPL)", 70) comment ("Kanäle") boolean ("Stereosignale verändern", 0) optionMenu ("Stereo", 1) option ("zu Mono konvertieren (a|b → ab)") option ("beide Kanäle extrahieren (a|b → a, b)") option ("Kanal 1 extrahieren (a|b → a)") option ("Kanal 2 extrahieren (a|b → b)") boolean ("Monosignale verändern", 0) optionMenu ("Mono", 1) option ("zu Stereo konvertieren (a → a|a)") option ("zu Stereo, rechts Stille (a → a|0)") option ("zu Stereo, links Stille (a → 0|a)") clicked = endPause ("Abbrechen", "Konvertieren", 2, 1) if clicked = 1 goto FINISH endif # count selected and store them in an array nOfSel = numberOfSelected ("Sound") for i to nOfSel     soundObj [i] = selected ("Sound", i) endfor for i to nOfSel selectObject (soundObj [i]) objName$ = selected$ ("Sound") fileID = do ("Copy...", objName$) # resampling selectObject (fileID) this_sf = do ("Get sampling frequency") if abtastrate_verändern = 1 new_sf = number (neue_Abtastrate$) if this_sf <> new_sf fooID = noprogress do ("Resample...", new_sf, 50) removeObject (fileID) fileID = fooID this_sf = new_sf endif endif # modify amplitude/intensity selectObject (fileID) objName$ = selected$ ("Sound") if lautstärke_verändern = 1 if methode = 1 do ("Multiply...", faktor) do ("Rename...", objName$ + "_" + string$ (faktor)) elsif methode = 2 do ("Scale peak...", absoluter_Peak) do ("Rename...", objName$ + "_" + string$ (absoluter_Peak)) elsif methode = 3 do ("Scale intensity...", durchnittliche_Intensität) do ("Rename...", objName$ + "_" + string$ (durchnittliche_Intensität)) endif endif # convert mono/stereo selectObject (fileID) objName$ = selected$ ("Sound") nOfCh = do ("Get number of channels") if stereosignale_verändern = 1 && nOfCh = 2 if stereo = 1 do ("Convert to mono") elsif stereo = 2 do ("Extract one channel...", 1) selectObject (fileID) do ("Extract one channel...", 2) elsif stereo = 3 do ("Extract one channel...", 1) elsif stereo = 4 do ("Extract one channel...", 2) endif removeObject (fileID) elsif monosignale_verändern = 1 && nOfCh = 1 if mono = 1 do ("Convert to stereo") elsif mono = 2 dur = do ("Get total duration") silID = do ("Create Sound from formula...", "silence", 1, 0, dur, this_sf, "0") plusObject (fileID) do ("Combine to stereo") do ("Rename...", objName$ + "_stereoRsil") removeObject (silID) elsif mono = 3 dur = do ("Get total duration") silID = do ("Create Sound from formula...", "silence", 1, 0, dur, this_sf, "0") selectObject (fileID) copyID = do ("Copy...", "copy") plusObject (silID) do ("Combine to stereo") do ("Rename...", objName$ + "_stereoLsil") removeObject (silID, copyID) endif removeObject (fileID) endif endfor # Restore or remove original selection selectObject () for i to nOfSel if originale_behalten = 0 removeObject (soundObj [i]) else     plusObject (soundObj [i]) endif endfor label FINISH