Thread overview
PixelPerfectEngine v0.10.0-beta.5 : Now with a synth
Feb 23, 2022
solidstate1991
Feb 23, 2022
WebFreak001
Feb 24, 2022
Salih Dincer
Feb 24, 2022
Salih Dincer
Feb 25, 2022
solidstate1991
February 23, 2022

https://github.com/ZILtoid1991/pixelperfectengine/releases/tag/v0.10.0-beta.5

After I created my own IO library that has audio features that are easier to interoperate with D code (iota), I decided to finish up my phase modulation (often sold as either frequency modulation or phase distortion too by some brands, with minor tweaks to the underlying math to avoid patent infringement) synthesizer for my game engine. This one uses a simplified math with fixed-length wavetables (can be user supplied too), highly configurable envelops, and has up to 16 voice polyphony if 2 operator mode is used for all channels (8 if channels are combined). It can even do resonant waveforms with some tricks (modulating a sine wave with a triangle wave).

Why write a synth when you can just play MP3 and WAV files?

  1. The very same teacher whose class I made the original (and very bad) version of the engine for just suggested this to me at the time.
  2. Seemed like an easy undertaking, and in some ways it was, except for the fact I needed to work on multiple things too. Hardest was the finetuning of the math with this kind of language.
  3. This way, adaptive soundtracks are easier to do if I or someone else using this engine decides so.

Future plans include more testing and fixing + implementing functions I didn't have time for, and porting it to VST too as I don't have the capacity to write a fully-featured DAW (someone maybe?) with a real polyphonic mode instead of the current 1-voice-per-channel solution. Maybe I'll even create a more upmarket version that is better suited for musicians if there's demand.

Also I'm yet again looking for team members on a gamedev team, but now I have some experience and I plan to "go commercial" with a coop later on.

February 23, 2022

On Wednesday, 23 February 2022 at 21:07:25 UTC, solidstate1991 wrote:

>

https://github.com/ZILtoid1991/pixelperfectengine/releases/tag/v0.10.0-beta.5

After I created my own IO library that has audio features that are easier to interoperate with D code (iota), I decided to finish up my phase modulation (often sold as either frequency modulation or phase distortion too by some brands, with minor tweaks to the underlying math to avoid patent infringement) synthesizer for my game engine. This one uses a simplified math with fixed-length wavetables (can be user supplied too), highly configurable envelops, and has up to 16 voice polyphony if 2 operator mode is used for all channels (8 if channels are combined). It can even do resonant waveforms with some tricks (modulating a sine wave with a triangle wave).

[...]

nice! Any example to play around with?

February 24, 2022

On Wednesday, 23 February 2022 at 21:20:53 UTC, WebFreak001 wrote:

>

On Wednesday, 23 February 2022 at 21:07:25 UTC, solidstate1991 wrote:

>

https://github.com/ZILtoid1991/pixelperfectengine/releases/tag/v0.10.0-beta.5

After I created my own IO library that has audio features that are easier to interoperate with D code (iota), I decided to finish up my phase modulation (often sold as either frequency modulation or phase distortion too by some brands, with minor tweaks to the underlying math to avoid patent infringement) synthesizer for my game engine. This one uses a simplified math with fixed-length wavetables (can be user supplied too), highly configurable envelops, and has up to 16 voice polyphony if 2 operator mode is used for all channels (8 if channels are combined). It can even do resonant waveforms with some tricks (modulating a sine wave with a triangle wave).

[...]

nice! Any example to play around with?

There are some errors during linking (I think sound related):

My computer configurations:

  • Debian GNU 11
  • Linux Kernel 5.10.0-11-amd64
  • dub-1.22.0
  • LLVM D compiler (1.24.0) based on DMD v2.094.1
  • gcc (Debian 10.2.1-6) 10.2.1 20210110
>

pixelperfectengine:windowmakerforconcrete ~master: building configuration "application"...
Linking...
/usr/bin/ld.gold: error: cannot find -lasound
device.d:97: error: undefined reference to 'snd_card_next'
[...]
alsa.d:220: error: undefined reference to 'snd_pcm_drain'
linux.d:227: error: undefined reference to 'snd_lib_error_set_handler'
collect2: error: ld returned 1 exit status
Error: /usr/bin/cc failed with status: 1
ldc2 failed with exit code 1.

Is there anything I can do for this problem?

SDB@79

February 24, 2022

On Thursday, 24 February 2022 at 13:15:50 UTC, Salih Dincer wrote:

>

Is there anything I can do for this problem?

I solved it using the following commands having two parts:

  • sudo apt-get -y install libasound2-dev
  • dub build :windowmakerforconcrete --compiler=ldc2 --force
February 25, 2022

On Thursday, 24 February 2022 at 17:36:49 UTC, Salih Dincer wrote:

>

On Thursday, 24 February 2022 at 13:15:50 UTC, Salih Dincer wrote:

>

Is there anything I can do for this problem?

I solved it using the following commands having two parts:

  • sudo apt-get -y install libasound2-dev
  • dub build :windowmakerforconcrete --compiler=ldc2 --force

:test1 will give you access to the synth's tester app (currently have a very limited set of features only). Also you might want to check out my editor for the engine, called "PixelPerfectEditor".