1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 cmake,
6 mbelib,
7 libsndfile,
8 itpp,
9 portaudioSupport ? true,
10 portaudio ? null,
11}:
12
13assert portaudioSupport -> portaudio != null;
14
15stdenv.mkDerivation {
16 pname = "dsd";
17 version = "2022-03-14";
18
19 src = fetchFromGitHub {
20 owner = "szechyjs";
21 repo = "dsd";
22 rev = "59423fa46be8b41ef0bd2f3d2b45590600be29f0";
23 sha256 = "128gvgkanvh4n5bjnzkfk419hf5fdbad94fb8d8lv67h94vfchyd";
24 };
25
26 nativeBuildInputs = [ cmake ];
27 buildInputs = [
28 mbelib
29 libsndfile
30 itpp
31 ]
32 ++ lib.optionals portaudioSupport [ portaudio ];
33
34 doCheck = true;
35
36 meta = with lib; {
37 description = "Digital Speech Decoder";
38 longDescription = ''
39 DSD is able to decode several digital voice formats from discriminator
40 tap audio and synthesize the decoded speech. Speech synthesis requires
41 mbelib, which is a separate package.
42 '';
43 homepage = "https://github.com/szechyjs/dsd";
44 license = licenses.gpl2;
45 platforms = platforms.unix;
46 maintainers = [ ];
47 mainProgram = "dsd";
48 };
49}