Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

I tried making a prototype DAW

A topic by piyoneer created 45 days ago Views: 407 Replies: 4
Viewing posts 1 to 5
(+1)

Hello.

My English and program may be poor, but I’d like to post them anyway.


https://piyoneer.itch.io/audiosystem

Out of technical curiosity, I made this.

It contains the module "audioserver" and the contraption "instrument".

The loop callback of play[] sequentially reads buffers.


I'll briefly explain how to use it.

Just copy and paste the following from "on loop do"...

To write sound, use audioserver.overdub[sound cursor].

Here, the cursor is the sample position in the stream, which can be referenced with audioserver.stream[].

audioserver.overtake[cursor sound.size] allows you to determine if the sound you are writing will collide with the read position.


I made it, but it frequently stops due to garbage collection.

Also, it does not play smoothly in the browser.

Feel free to modify it as you like, and let me know if you have any suggestions for improvement.

Hi! This is really impressive! I've dabbled a bit with audio myself but this feels a level above in terms of complexity.

Although for me it's crashing to desktop after a few seconds of playback - so it would be good to find out why that is, because if that's fixed it's potentially really useful.

It seems that waveform generation is heavy, so it's probably best to limit the sound duration to around a few hundred samples.

Also, once memory usage becomes too high and garbage collection is relaxed (I'm not sure if this is a correct understanding...), the memory usage increases uncontrollably.

The current method is to restart and adjust...

(1 edit) (+2)

With the latest dev version of Decker, this no longer crashes, and memory stabilizes when left to play the first card. You'd have to build it yourself from github, or wait for the next release.

(+2)

https://github.com/JohnEarnest/Decker/issues/133

Is this it?

It seems I was writing a value to a non-existent location (terrible code!).

I wrote cursor+delay to express a delay, but it seems I didn't take the ring buffer into account.

Thanks to the developers and those who reported it!