This is the fifth of a series of posts about SQA, my pet audio project. I’m rebuilding it from the ground up, for reasons explained here.

Commit log (not “this week’s”, because this definitely wasn’t a week)

  • 86e0b94 on 2017-02-11: backend: add reply_to field to packets
  • bb39162 on 2017-02-11: core: make repos reference each other with path=
  • dc38818 on 2017-02-11: engine: fix nodrop not working with latest rust
  • 593627d on 2017-02-11: backend: add server handler, split codec into mod
  • 3179a59 on 2017-02-11: core: use cargo workspaces for this repository
  • 9d3d931 on 2017-02-10: add a nice README
  • 34c4366 on 2017-02-10: Remove file used in initial commit
  • 4c5ac58 on 2017-02-10: Add ‘sqa-backend/’ from commit ‘0315dc974a32d6a86895c190a54f50e8cf619671’ * editor’s note: these ‘Add…’ commits were a product of importing the different sqa- repos into one big one.
  • 3128138 on 2017-02-10: Add ‘sqa-ffmpeg/’ from commit ‘b720f9d31b891ed4b377d42a7e3489c9c2e61831’
  • 6cff560 on 2017-02-10: Add ‘sqa-jack/’ from commit ‘b9631efa01ceabeab08c3ae0335547af62750cc4’
  • 00d8a41 on 2017-02-10: Add ‘sqa-engine/’ from commit ‘0bf5773b1ffbdf2fc4aad6d977356ed58b8e2be2’
  • 716a3cc on 2017-02-10: SQA Omnibus initial commit
  • 0315dc9 on 2017-02-10: SQA Backend initial commit
  • b720f9d on 2017-01-28: README, license, cargo data
  • effd032 on 2017-01-28: Document all the errors, add TooManySeconds
  • 6f8cfcd on 2017-01-28: Add bitrate() method
  • 153f450 on 2017-01-28: Support for timestamps, stream duration, seeking, and networking

Want to play along at home? The command to generate that commit log is git log --pretty=format:"* [**%h**]( *on %ad*: %s" --date=short.

Changes in detail

As you can probably guess, things have been a bit busy recently. As a result, I haven’t had that much time to write up these devlogs (this will change from now on). However, work is still trickling in!

This time, I improved sqa-ffmpeg a bit, making it into a proper library and improving its usability. It also gained a bit more functionality, such as seeking (hooray!), networking (playing streams over e.g. HTTP, which won’t ever be used in SQA but nice to have), and facilities for querying info about the stream (bitrate, sample rate, number of channels, duration, etc).

We now have, by the way, all the libraries required to actually build this thing - we have a real-time audio engine, a set of JACK bindings, and some FFmpeg bindings to read audio files. We can read audio, and we can play it.

(Side note: to avoid fragmentation, all SQA libraries and code are now in one big SQA repository, instead of being in their own separate repos. This makes things easier just…generally.)

Now for the hard part… bringing everything together into one cohesive program! Development on sqa-backend has begun, and I’m using Rust’s fancy Tokio and futures libraries to do it in a nice async way. More to follow once it’s all implemented!

That’s it for this ‘week’ - stay tuned for next week’s devlog!