Skip to content

Commit

Permalink
simplify behavior of wav converter
Browse files Browse the repository at this point in the history
  • Loading branch information
Teque5 committed Apr 12, 2024
1 parent bdbfa07 commit a0fbd50
Showing 1 changed file with 9 additions and 10 deletions.
19 changes: 9 additions & 10 deletions sigmf/apps/convert_wav.py
Expand Up @@ -6,6 +6,7 @@

"""converter for wav containers"""

import argparse
import datetime
import getpass
import logging
Expand All @@ -15,8 +16,9 @@

from scipy.io import wavfile

from .. import SigMFFile, __specification__
from .. import __version__ as toolversion
from .. import archive
from ..sigmffile import SigMFFile
from ..utils import get_data_type_str

log = logging.getLogger()
Expand All @@ -26,6 +28,8 @@ def convert_wav(input_wav_filename, archive_filename=None, start_datetime=None,
"""
read a .wav and write a .sigmf archive
"""
input_path = pathlib.Path(input_wav_filename)
input_stem = input_path.stem
samp_rate, wav_data = wavfile.read(input_wav_filename)

global_info = {
Expand All @@ -35,27 +39,27 @@ def convert_wav(input_wav_filename, archive_filename=None, start_datetime=None,
SigMFFile.NUM_CHANNELS_KEY: 1 if len(wav_data.shape) < 2 else wav_data.shape[1],
SigMFFile.RECORDER_KEY: os.path.basename(__file__),
SigMFFile.SAMPLE_RATE_KEY: samp_rate,
SigMFFile.VERSION_KEY: __specification__,
}

if start_datetime is None:
fname = pathlib.Path(input_wav_filename)
mtime = datetime.datetime.fromtimestamp(fname.stat().st_mtime)
mtime = datetime.datetime.fromtimestamp(input_path.stat().st_mtime)
start_datetime = mtime.isoformat() + "Z"

capture_info = {SigMFFile.START_INDEX_KEY: 0}
if start_datetime is not None:
capture_info[SigMFFile.DATETIME_KEY] = start_datetime

tmpdir = tempfile.mkdtemp()
sigmf_data_filename = input_wav_filename + archive.SIGMF_DATASET_EXT
sigmf_data_filename = input_stem + archive.SIGMF_DATASET_EXT
sigmf_data_path = os.path.join(tmpdir, sigmf_data_filename)
wav_data.tofile(sigmf_data_path)

meta = SigMFFile(data_file=sigmf_data_path, global_info=global_info)
meta.add_capture(0, metadata=capture_info)

if archive_filename is None:
archive_filename = os.path.basename(input_wav_filename) + archive.SIGMF_ARCHIVE_EXT
archive_filename = input_stem + archive.SIGMF_ARCHIVE_EXT
meta.tofile(archive_filename, toarchive=True)
return os.path.abspath(archive_filename)

Expand All @@ -64,11 +68,6 @@ def main():
"""
entry-point for sigmf_convert_wav
"""

import argparse

from sigmf import __version__ as toolversion

parser = argparse.ArgumentParser(description="Convert .wav to .sigmf container.")
parser.add_argument("input", type=str, help="Wavfile path")
parser.add_argument("--author", type=str, default=None, help=f"set {SigMFFile.AUTHOR_KEY} metadata")
Expand Down

0 comments on commit a0fbd50

Please sign in to comment.