I am trying to write my first python script that will use the mod-script-pipe. I am very beginner, not just to Audacity but also to python. I started with the recording_test.py script and modified it to simply Import2, then Export2 to a new file, then Import2 the new file again. As you can see from the screen shot, somewhere an amplify type effect has occurred. The newly Imported track has clipping which the original doesn’t have.
Is Export2 somehow adding an amplify or something?
#! /usr/bin/python3
# -*- coding: utf-8 -*-
"""Test Import / Export.
import_export_test.py loads a WAV file, exports it as a new file with "-out"
appended to the file name, then imports the new file again.
To run the test without input prompts, set valid values for
PATH and INFILE.
User supplied variables
-------
PATH: Path to the folder containing the input test file. Also used for exporting the result.
INFILE: Name of the input WAV file.
With a little modification, can be suitable for rinse and repeat with different
input files.
Make sure Audacity is running and that mod-script-pipe is enabled
before running this script.
"""
import os
import sys
import time
import json
# Platform specific file name and file path.
# PATH is the location of files to be imported / exported.
#PATH = "c:\\tmp"
PATH = ""
while not os.path.isdir(PATH):
PATH = os.path.realpath(input('Path to test folder: '))
if not os.path.isdir(PATH):
print('Invalid path. Try again.')
print('Test folder: ' + PATH)
#INFILE = "testfile.wav"
INFILE = ""
while not os.path.isfile(os.path.join(PATH, INFILE)):
INFILE = input('Name of input WAV file: ')
# Ensure we have the .wav extension.
INFILE = os.path.splitext(INFILE)[0] + '.wav'
if not os.path.isfile(os.path.join(PATH, INFILE)):
print(f"{os.path.join(PATH, INFILE)} not found. Try again.")
else:
print(f"Input file: {os.path.join(PATH, INFILE)}")
# Remove file extension.
INFILE = os.path.splitext(INFILE)[0]
# Platform specific constants
if sys.platform == 'win32':
print("recording_test_modifie.py, running on windows")
PIPE_TO_AUDACITY = '\\\\.\\pipe\\ToSrvPipe'
PIPE_FROM_AUDACITY = '\\\\.\\pipe\\FromSrvPipe'
EOL = '\r\n\0'
else:
print("recording-test.py, running on linux or mac")
PIPE_TO_AUDACITY = '/tmp/audacity_script_pipe.to.' + str(os.getuid())
PIPE_FROM_AUDACITY = '/tmp/audacity_script_pipe.from.' + str(os.getuid())
EOL = '\n'
print("Write to \"" + PIPE_TO_AUDACITY +"\"")
if not os.path.exists(PIPE_TO_AUDACITY):
print(""" ..does not exist.
Ensure Audacity is running with mod-script-pipe.""")
sys.exit()
print("Read from \"" + PIPE_FROM_AUDACITY +"\"")
if not os.path.exists(PIPE_FROM_AUDACITY):
print(""" ..does not exist.
Ensure Audacity is running with mod-script-pipe.""")
sys.exit()
print("-- Both pipes exist. Good.")
TOPIPE = open(PIPE_TO_AUDACITY, 'w')
print("-- File to write to has been opened")
FROMPIPE = open(PIPE_FROM_AUDACITY, 'r')
print("-- File to read from has now been opened too\r\n")
def send_command(command):
"""Send a command to Audacity."""
print("Send: >>> "+command)
TOPIPE.write(command + EOL)
TOPIPE.flush()
def get_response():
"""Get response from Audacity."""
line = FROMPIPE.readline()
result = ""
while True:
result += line
line = FROMPIPE.readline()
# print(f"Line read: [{line}]")
if line == '\n':
return result
def do_command(command):
"""Do the command. Return the response."""
send_command(command)
# time.sleep(0.1) # may be required on slow machines
response = get_response()
print("Rcvd: <<< " + response)
return response
def quick_test():
"""Quick test to ensure pipe is working."""
do_command('Help: CommandName=Help')
def do_import_export_file(name):
"""Import track """
do_command(f"Import2: Filename=\"{os.path.join(PATH, name + '.wav')}\"")
do_command("Select: Track=0")
do_command("SelTrackStartToEnd")
print("Just before Export2")
outname = name + "-out.wav"
do_command(f"Export2: Filename=\"{os.path.join(PATH, outname)}\" NumChannels=1.0")
do_command(f"Import2: Filename=\"{os.path.join(PATH, outname)}\"")
#quick_test()
# Run the test with "testfile.wav" in the specified PATH.
print("Just before do_import_export_file, INFILE = " + INFILE)
do_import_export_file(INFILE)