www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - PixelPerfectEngine v0.10.0-beta.5 : Now with a synth

reply solidstate1991 <laszloszeremi outlook.com> writes:
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.
Feb 23 2022
parent reply WebFreak001 <d.forum webfreak.org> writes:
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?
Feb 23 2022
parent reply Salih Dincer <salihdb hotmail.com> writes:
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
Feb 24 2022
parent reply Salih Dincer <salihdb hotmail.com> writes:
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
Feb 24 2022
parent solidstate1991 <laszloszeremi outlook.com> writes:
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".
Feb 25 2022