1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 gtkmm2,
6 lv2,
7 lvtk,
8 pkg-config,
9}:
10stdenv.mkDerivation {
11 pname = "fmsynth-unstable";
12 version = "2015-02-07";
13 src = fetchFromGitHub {
14 owner = "Themaister";
15 repo = "libfmsynth";
16 rev = "9ffa1d2fea287f1209b210d2dbde2f0f60f37176";
17 sha256 = "1bk0bpr069hzx2508rgfbwpxiqgr7dmdkhqdywmd2i4rmibgrm1q";
18 };
19
20 nativeBuildInputs = [ pkg-config ];
21 buildInputs = [
22 gtkmm2
23 lv2
24 lvtk
25 ];
26
27 buildPhase = ''
28 cd lv2
29 substituteInPlace GNUmakefile --replace "/usr/lib/lv2" "$out/lib/lv2"
30 make SIMD=0
31 '';
32
33 preInstall = "mkdir -p $out/lib/lv2";
34
35 meta = {
36 description = "Flexible 8 operator FM synthesizer for LV2";
37 longDescription = ''
38 The synth core supports:
39
40 - Arbitrary amounts of polyphony
41 - 8 operators
42 - No fixed "algorithms"
43 - Arbitrary modulation, every operator can modulate any other operator, even itself
44 - Arbitrary carrier selection, every operator can be a carrier
45 - Sine LFO, separate LFO per voice, modulates amplitude and frequency of operators
46 - Envelope per operator
47 - Carrier stereo panning
48 - Velocity sensitivity per operator
49 - Mod wheel sensitivity per operator
50 - Pitch bend
51 - Keyboard scaling
52 - Sustain, sustained keys can overlap each other for a very rich sound
53 - Full floating point implementation optimized for SIMD
54 - Hard real-time constraints
55 '';
56 homepage = "https://github.com/Themaister/libfmsynth";
57 license = lib.licenses.mit;
58 maintainers = [ lib.maintainers.magnetophon ];
59 platforms = lib.platforms.linux;
60 };
61}