Posts
5553
Following
349
Followers
548
.
For x86 I actually (after investigating) solely base on AVX2. There's no legacy history in this software so I don't care about legacy SIMDs (or want to implement them at least myself).
0
0
0
To get more texel throughput from Pentium, the next trick is to preprocess texture bitmap in 8x8 pixel tiles. That will significantly reduce cache misses :-)
1
0
0

Jarkko Sakkinen

Edited 2 months ago
Doing my first peaces of SIMD to the audio pipeline :-) Both SSE and NEON.

Last time I did anything resembling this was when using FPU to divide 1/w while ALU is linearly interpolating the texture (on Pentium which has also nice and fast ALU pipeline, a leap over 486). This used to be common approach for software rendered perspective corrected texture mapping.
1
0
0

Jarkko Sakkinen

Edited 2 months ago
OK, so when they say "64-bit professional internal audio processing", in English it means almost just s/float/double/g 🤷
0
0
0

Jarkko Sakkinen

new episode, love this series :-) https://www.youtube.com/watch?v=k6ROHHcF2rU
0
0
0

Jarkko Sakkinen

Edited 2 months ago
Project reset/migration to C code base started over weekend when my friend asked could we do (G3/G4) PowerPC port of the engine. I don't know but I don't want to create bottleneck preventing such work :-)

Being aware of such potential bottleneck I had no other options really.
0
0
0

Jarkko Sakkinen

Edited 2 months ago
Tracker will take some time and especially since I'm doing C rewrite, which is right now completely broken (literally a start from scratch).

However, the elegant C implementation will motivate me more as a developer as I enjoy it more, and thus will eventually get the project there.

With Rust implementation I know I would give up at some point. E.g., in this type of project you want to leave space for downscaling to very low-end computers, and more towards 80s/90s hardware we go, more opcodes cost relative to memory access costs. Thus I don't want compiler to do any memory safety stuff for instance. Software must have full control of generated opcodes.

The code base looks in style a lot like kernel code and utilizes its popular patterns such as ops structs and container_of macros. And coding style is of course kernel coding style.
1
0
0

Jarkko Sakkinen

Edited 3 months ago
@neal, If you know anyone who might be interested on this, please forward.
0
0
0
@pinkforest that's it. i will call my daw as turbotape. Thanks, now I have name for the app :-)
0
0
1
@pinkforest I lived also through the era of turbotapes :-)
1
0
1

Jarkko Sakkinen

Mastodon gives those old school BBS dial-up vibrations when the images load in your feed from time to time ;-)
0
1
1
Or not JIT but "compiled song"
0
0
0

Jarkko Sakkinen

One thing where would be a slot to try JIT in a tracker: a DJ software playing the songs. It will gain from faster reaction time from the engine and data does not need to be editable.

Not having plugins is here essential because then you don't even theoretically have an opcode mapping. Also, not having pre-defined limit for channels is bad. But I have 16-channel sequencer.

With this world having constraints I think you make compiled versions of songs. Not sure if I'm going to do it but technical constraints enable it to be done.
1
0
0

Jarkko Sakkinen

Edited 3 months ago
One big realization in tracker project has been at I like raw GLSL or at least it has now helped me a lot.

Before I spent lot of time with widgets and thinking about one screen. Once I wrote rendering scheme where one screen is a GLSL program driven parametrized from the state I just think the global state and nasty widget code is not all around.

GLSL is also nice because of multitude of viewers and decoupled from implementation language. I don't get why I would want to wrap shader generation to e.g. programming language macros.

This helps me now a lot that I'm rewriting the tracker in C too. It is easier to map things to global state to global state than various screen specific substates.
0
0
0
And various tools processing Polyend projects can easily adapt and recognize these project files and address the differences.
0
0
0
Powered by C ;-)
0
0
1

Jarkko Sakkinen

Edited 3 months ago
I do not need fixed purpose softsynths. At some point they need to be improved and that might be backwards incompatible, so you need a stupid checkbox to switch "compatibility mode" (lots of plugins do this). Or you can keep it as it is i.e., not being useful for anything.

Instead it is just better to provide higher quality algorithms for sample, wavetable and granular oscillators, and make that unified synth better with sound :-)

And this will never ever have plugins. But it will continuously sound better :-)
1
0
0

Jarkko Sakkinen

My unnamed tracker has capability to play and import Polyend and Protracker projects and audio and DSP to realize that the fullest but in addition...

1. It will load/save its own format.
2. Decent modern real-time timestrech.
3. Arbitrary length samples mono/stereo.
4. Polyend song themselves even with old features just sound much better given high-fidelity signal, oversampling, across the board better and less aliased DSP and some magic dust :-)
5. From eight to 16 channels.
6. Curvature of envelopes (I don't get why they didn't just do this, it is very weird).
7. 1010music Blackbox'ish hardware synth auto-multisampling.
8. All 16 channels are equal. I.e. no weird 8/8 divisions. All do samples and MIDI instruments.

That's about it for 1.0 DoD :-) I retain my right to reconsider licensing up until I release anything but most likely GPLv3.

I'll support Pipewire on Linux and CoreAudio on macOS and obviously Windows and WASAPI and ASIO support are welcome as contributions.

#tracker #polyend #chiptune #pipewire #linux
1
1
3

Jarkko Sakkinen

I will support first generation Polyend projects as an import format just like Protracker modules but my tracker will have its own project format and own unique features, which makes sense to me :-)
0
0
0
Show older