Update README.md

This commit is contained in:
vsariola 2021-04-24 22:09:30 +03:00
parent b2b15f825d
commit 15cf8a750c

View File

@ -262,12 +262,12 @@ New features since fork
used. used.
- **Songs are YAML files**. These markup files are simple data files, - **Songs are YAML files**. These markup files are simple data files,
describing the tracks, patterns and patch structure (see describing the tracks, patterns and patch structure (see
[here](tests/test_oscillat_trisaw.yml) for an example). The sointu-cli [here](tests/test_oscillat_trisaw.yml) for an example). The sointu-compile
compiler then reads these files and compiles them into .asm code. This has then reads these files and compiles them into .asm code. This has the nice
the nice implication that, in future, there will be no need for a binary implication that, in future, there will be no need for a binary format to
format to save patches, nor should you need to commit .o or .asm to repo: save patches, nor should you need to commit .o or .asm to repo: just put the
just put the .yml in the repo and automate the .yml -> .asm -> .o steps .yml in the repo and automate the .yml -> .asm -> .o steps using
using sointu-cli & nasm. sointu-compile & nasm.
- **Harmonized support for stereo signals**. Every opcode supports a stereo - **Harmonized support for stereo signals**. Every opcode supports a stereo
variant: the stereo bit is hidden in the least significant bit of the variant: the stereo bit is hidden in the least significant bit of the
command stream and passed in carry to the opcode. This has several nice command stream and passed in carry to the opcode. This has several nice
@ -278,7 +278,7 @@ New features since fork
stereo opcodes usually follow stereo opcodes (and mono opcodes follow mono stereo opcodes usually follow stereo opcodes (and mono opcodes follow mono
opcodes), the stereo bits of the command bytes will be highly correlated and opcodes), the stereo bits of the command bytes will be highly correlated and
if crinkler or any other modeling compressor is doing its job, that should if crinkler or any other modeling compressor is doing its job, that should
make them highly predictable i.e. highly compressably. make them highly predictable i.e. highly compressable.
- **Test-driven development**. Given that 4klang was already a mature project, - **Test-driven development**. Given that 4klang was already a mature project,
the first thing actually implemented was a set of regression tests to avoid the first thing actually implemented was a set of regression tests to avoid
breaking everything beyond any hope of repair. Done, using go test (runs the breaking everything beyond any hope of repair. Done, using go test (runs the
@ -317,19 +317,19 @@ New features since fork
hand-written assembly code by sointu compiler, but with this, the tracker is hand-written assembly code by sointu compiler, but with this, the tracker is
ultraportable and does not need cgo calls. ultraportable and does not need cgo calls.
- **Using Sointu as a sync-tracker**. Similar to [GNU - **Using Sointu as a sync-tracker**. Similar to [GNU
Rocket](https://github.com/yupferris/gnurocket), but (ab)using the tracker Rocket](https://github.com/rocket/rocket), but (ab)using the tracker we
we already have for music. We use the Go "rpc" package to send current sync already have for music. We use the Go rpc package to send current sync
values from the new "sync" opcode + optionally the current fractional row values from the new SYNC opcode + optionally the current fractional row the
the song is on. The syncs are saved every 256th sample (approximately 172 song is on. The syncs are saved every 256th sample (approximately 172 Hz).
Hz). For 4k intro development, the idea is to write a debug version of the For 4k intro development, the idea is to write a debug version of the intro
intro that merely loads the shader and listens to the RPC messages, and then that merely loads the shader and listens to the RPC messages, and then draws
draws the shader with those as the uniforms. Then, during the actual 4k the shader with those as the uniforms. Then, during the actual 4k intro, one
intro, one can get the sync data from Sointu: if the song uses syncs, can get the sync data from Sointu: if the song uses syncs, su_render_song
su_render_song writes the syncs to a float array. During each time step, a writes the syncs to a float array. During each time step, a slice of this
slice of this array can be sent to the shader as a uniform float array. A array can be sent to the shader as a uniform float array. A track with two
track with two voices, triggering an instrument with a single envelope and a voices, triggering an instrument with a single envelope and a slow filter,
slow filter can even be used as a cheap smooth interpolation mechanism, can even be used as a cheap smooth interpolation mechanism, provided the
provided the syncs are added to each other in the shader. syncs are added to each other in the shader.
Future goals Future goals
------------ ------------