├── .github └── workflows │ └── zola.yml ├── .gitignore ├── CNAME ├── LICENSE ├── README.md ├── _config.yml ├── config.toml ├── content └── _index.md ├── public ├── .gitignore └── CNAME ├── sass └── style.scss └── templates ├── footer.html ├── head.html ├── header.html ├── index.html ├── page.html └── section.html /.github/workflows/zola.yml: -------------------------------------------------------------------------------- 1 | # https://github.com/marketplace/actions/zola-deploy-to-pages 2 | # 2020-07-01 3 | 4 | on: 5 | push: 6 | branches: 7 | - master 8 | pull_request: 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | if: github.ref != 'refs/heads/master' 13 | steps: 14 | - name: 'Checkout' 15 | uses: actions/checkout@master 16 | - name: 'Build only' 17 | uses: shalzz/zola-deploy-action@master 18 | env: 19 | BUILD_DIR: . 20 | TOKEN: ${{ secrets.GITHUB_TOKEN }} 21 | BUILD_ONLY: true 22 | build_and_deploy: 23 | runs-on: ubuntu-latest 24 | if: github.ref == 'refs/heads/master' 25 | steps: 26 | - name: 'Checkout' 27 | uses: actions/checkout@master 28 | - name: 'Build and deploy' 29 | uses: shalzz/zola-deploy-action@master 30 | env: 31 | BUILD_DIR: . 32 | TOKEN: ${{ secrets.GITHUB_TOKEN }} 33 | BUILD_ONLY: true 34 | - name: Deploy 35 | uses: peaceiris/actions-gh-pages@v3 36 | with: 37 | github_token: ${{ secrets.GITHUB_TOKEN }} 38 | publish_dir: ./public 39 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /public/* 2 | !/public/.gitignore 3 | -------------------------------------------------------------------------------- /CNAME: -------------------------------------------------------------------------------- 1 | areweaudioyet.com 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 areweaudioyet.com 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Are We Audio Yet? 2 | 3 | 4 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | # Welcome to Jekyll! 2 | # 3 | # This config file is meant for settings that affect your whole blog, values 4 | # which you are expected to set up once and rarely edit after that. If you find 5 | # yourself editing this file very often, consider using Jekyll's data files 6 | # feature for the data you need to update frequently. 7 | # 8 | # For technical reasons, this file is *NOT* reloaded automatically when you use 9 | # 'bundle exec jekyll serve'. If you change this file, please restart the server process. 10 | 11 | # Site settings 12 | # These are used to personalize your new site. If you look in the HTML files, 13 | # you will see them accessed via {{ site.title }}, {{ site.email }}, and so on. 14 | # You can create any custom variable you would like, and they will be accessible 15 | # in the templates via {{ site.myvariable }}. 16 | title: Are We Audio Yet? 17 | description: >- # this means to ignore newlines until "baseurl:" 18 | Are We Audio Yet? Rust & Audio 🦀 🔊 19 | baseurl: "" # the subpath of your site, e.g. /blog 20 | url: "https://areweaudioyet.com" # the base hostname & protocol for your site, e.g. http://example.com 21 | 22 | # Build settings 23 | markdown: kramdown 24 | theme: minima 25 | plugins: 26 | - jekyll-feed 27 | # Exclude from processing. 28 | # The following items will not be processed, by default. Create a custom list 29 | # to override the default setting. 30 | # exclude: 31 | # - Gemfile 32 | # - Gemfile.lock 33 | # - node_modules 34 | # - vendor/bundle/ 35 | # - vendor/cache/ 36 | # - vendor/gems/ 37 | # - vendor/ruby/ 38 | -------------------------------------------------------------------------------- /config.toml: -------------------------------------------------------------------------------- 1 | # The URL the site will be built for 2 | base_url = "https://areweaudioyet.com" 3 | 4 | # Whether to automatically compile all Sass files in the sass directory 5 | compile_sass = true 6 | 7 | # Whether to do syntax highlighting 8 | # Theme can be customised by setting the `highlight_theme` variable to a theme supported by Zola 9 | highlight_code = true 10 | highlight_theme = "monokai" 11 | 12 | # Whether to build a search index to be used later on by a JavaScript library 13 | build_search_index = false 14 | generate_rss = false 15 | 16 | [extra] 17 | # Put all your custom variables here 18 | -------------------------------------------------------------------------------- /content/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Are We Audio Yet?" 3 | +++ 4 | 5 | _You can make sounds!_ 6 | 7 | 🦀 🔊 There are some libraries and plenty of people making things. 8 | 9 | ## Community 10 | 11 | - [rust.audio](https://rust.audio/) is a nice website, with articles and tutorials 12 | - [Rust Audio Discourse](https://rust-audio.discourse.group/) is a forum for all sorts of conversation on audio-related programming in Rust 13 | - [Rust Audio Discord](https://discord.gg/VHw2sJR) is a chat room for less-structured, more realtime conversation 14 | - [RustAudio GitHub](https://github.com/RustAudio/) is the main GitHub organization of this community 15 | - [Areweyet](https://wiki.mozilla.org/Areweyet) is a list of other Are We Yet sites 16 | 17 | ## Libraries 18 | 19 | | | | | | 20 | | ------ | ------------------------------------------------------ | --------------------------------------------- | --------------------------------------- | 21 | | `vst` | A library for creating VST plugins | [GitHub](https://github.com/RustAudio/vst-rs) | [Crates](https://crates.io/crates/vst) | 22 | | `cpal` | Low-level, cross-platform library for audio IO in Rust | [GitHub](https://github.com/tomaka/cpal) | [Crates](https://crates.io/crates/cpal) | 23 | 24 | ## Utilities 25 | 26 | | | | | | 27 | | ------ | ------------------------------------------------------ | --------------------------------------------- | --------------------------------------- | 28 | | `assert_no_alloc` | A custom allocator allowing to temporarily disable memory (de)allocations for a real time thread | [GitHub](https://github.com/Windfisch/rust-assert-no-alloc) | [Crates](https://crates.io/crates/assert_no_alloc) | 29 | -------------------------------------------------------------------------------- /public/.gitignore: -------------------------------------------------------------------------------- 1 | !CNAME -------------------------------------------------------------------------------- /public/CNAME: -------------------------------------------------------------------------------- 1 | areweaudioyet.com 2 | -------------------------------------------------------------------------------- /sass/style.scss: -------------------------------------------------------------------------------- 1 | /* Minimalistic redesign 2019 */ 2 | 3 | /* ### RESET CSS ### */ 4 | 5 | /* http://meyerweb.com/eric/tools/css/reset/ 6 | v2.0 | 20110126 7 | License: none (public domain) 8 | */ 9 | 10 | /* prettier-ignore */ 11 | html, body, div, span, applet, object, iframe, 12 | h1, h2, h3, h4, h5, h6, p, blockquote, pre, 13 | a, abbr, acronym, address, big, cite, code, 14 | del, dfn, em, img, ins, kbd, q, s, samp, 15 | small, strike, strong, sub, sup, tt, var, 16 | b, u, i, center, 17 | dl, dt, dd, ol, ul, li, 18 | fieldset, form, label, legend, 19 | table, caption, tbody, tfoot, thead, tr, th, td, 20 | article, aside, canvas, details, embed, 21 | figure, figcaption, footer, header, hgroup, 22 | menu, nav, output, ruby, section, summary, 23 | time, mark, audio, video { 24 | margin: 0; 25 | padding: 0; 26 | border: 0; 27 | font-size: 100%; 28 | font: inherit; 29 | vertical-align: baseline; 30 | } 31 | 32 | /* HTML5 display-role reset for older browsers */ 33 | /* prettier-ignore */ 34 | article, aside, details, figcaption, figure, 35 | footer, header, hgroup, menu, nav, section { 36 | display: block; 37 | } 38 | body { 39 | line-height: 1; 40 | } 41 | ol, 42 | ul { 43 | list-style: none; 44 | } 45 | blockquote, 46 | q { 47 | quotes: none; 48 | } 49 | blockquote:before, 50 | blockquote:after, 51 | q:before, 52 | q:after { 53 | content: ""; 54 | content: none; 55 | } 56 | table { 57 | border-collapse: collapse; 58 | border-spacing: 0; 59 | } 60 | 61 | /* ### END RESET ### */ 62 | 63 | /* ### MAIN STUFF ### */ 64 | 65 | $orange: #fd971f; 66 | $warmgrey: #272822; 67 | $darkgrey: #333; 68 | $lightgrey: #444; 69 | $lightestgrey: #888; 70 | 71 | body { 72 | max-width: 70ch; 73 | margin: 0 auto; 74 | padding: 3em 1em; 75 | font-family: "Helvetica Neue", "-apple-system", "BlinkMacSystemFont", 76 | "Segoe UI", "Roboto", "Arial", sans-serif; 77 | font-size: 14pt; 78 | color: $darkgrey; 79 | line-height: 1.6; 80 | } 81 | 82 | /* prettier-ignore */ 83 | h1, h2, h3, h4, h5, h6, p, sup, ul, ol { 84 | /* Catch-all vertical margins for block elements */ 85 | margin: 1rem 0; 86 | } 87 | 88 | /* prettier-ignore */ 89 | h1, h2, h3, h4, h5, h6, strong { 90 | color: $darkgrey; 91 | font-weight: 800; 92 | } 93 | 94 | em { 95 | font-style: italic; 96 | } 97 | 98 | h1 { 99 | line-height: 1.2; 100 | background-color: $orange; 101 | padding: 0.5rem; 102 | font-size: 3.5rem; 103 | } 104 | 105 | h2 { 106 | font-size: 3rem; 107 | } 108 | 109 | /* prettier-ignore */ 110 | h3, h4, h5, h6 { 111 | font-size: 2rem; 112 | } 113 | 114 | a { 115 | text-decoration: none; 116 | color: inherit; 117 | padding-bottom: 2px; 118 | border-bottom: 2px solid $orange; 119 | } 120 | 121 | nav a, 122 | footer nav a { 123 | margin-right: 1rem; 124 | color: $darkgrey; 125 | } 126 | 127 | /* Tag external links. TODO: make more robust!*/ 128 | a[href^="http://"]:after, 129 | a[href^="https://"]:after { 130 | font-size: 0.75rem; 131 | content: "↗"; 132 | vertical-align: super; 133 | text-decoration: none; 134 | } 135 | 136 | hr { 137 | border: none; 138 | border-bottom: 1px solid $lightestgrey; 139 | } 140 | 141 | ol, 142 | ul { 143 | list-style-position: inside; 144 | } 145 | 146 | ol ol, 147 | ul ul, 148 | ol ul, 149 | ul ol { 150 | /* Only apply padding to nested lists */ 151 | padding: 0 2rem; 152 | margin: inherit; 153 | } 154 | 155 | ul { 156 | list-style-type: disc; 157 | } 158 | 159 | ol { 160 | list-style-type: decimal; 161 | } 162 | 163 | .list-nodisc { 164 | list-style-type: none; 165 | } 166 | 167 | blockquote { 168 | font-size: 1.5rem; 169 | font-weight: 200; 170 | padding: 0 1rem; 171 | margin: 0; 172 | border-left: 0.5rem solid $orange; 173 | } 174 | 175 | // TODO: stay-down footer 176 | footer { 177 | margin-top: 4rem; 178 | border-top: 1px solid $lightestgrey; 179 | } 180 | 181 | img { 182 | max-width: 100%; 183 | } 184 | 185 | td { 186 | padding: 0.5rem; 187 | } 188 | 189 | /* ### TEMPLATE SPECIFIC STUFF ### */ 190 | 191 | /* Special styles for the blog list links */ 192 | .post_item { 193 | list-style-type: none; 194 | margin: 1rem 0; 195 | } 196 | .post_item a { 197 | color: $darkgrey; 198 | background: $orange; 199 | text-decoration: none; 200 | padding: 0.25rem; 201 | } 202 | 203 | .footnote-reference { 204 | color: $orange; 205 | font-size: 0.75rem; 206 | vertical-align: super; 207 | a { 208 | border-bottom: none; 209 | } 210 | } 211 | 212 | .footnote-definition { 213 | color: $lightestgrey; 214 | margin: 1rem 0; 215 | p { 216 | display: inline; 217 | } 218 | * { 219 | margin: 0; 220 | } 221 | } 222 | 223 | .footnote-definition-label { 224 | color: $orange; 225 | margin-right: 1rem; 226 | } 227 | 228 | .date { 229 | color: $lightestgrey; 230 | } 231 | 232 | /* ### CODE STUFF ### */ 233 | 234 | code, 235 | pre { 236 | background: #272822; 237 | color: #fff; 238 | font-family: "DejaVu Sans Mono", "Courier New", "Courier", monospace; 239 | } 240 | 241 | code { 242 | padding: 0.25rem 0.5rem; 243 | white-space: nowrap; 244 | } 245 | 246 | pre { 247 | overflow-x: scroll; 248 | padding: 1em; 249 | } 250 | 251 | pre code { 252 | /* Undo paragraph inset padding */ 253 | padding: 0; 254 | } 255 | 256 | // Responsiveness 257 | @media screen and (max-width: 640px) { 258 | h1 { 259 | font-size: 2rem; 260 | } 261 | } 262 | -------------------------------------------------------------------------------- /templates/footer.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /templates/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | {%if section.title%} 11 | {{ section.title }} 12 | 13 | {%endif%} {%if page.title%} 14 | {{ page.title }} 15 | 16 | {%endif%} {%if section.description%} 17 | 18 | 19 | {%endif%} {%if page.description%} 20 | 21 | 22 | {%endif%} 23 | 24 | -------------------------------------------------------------------------------- /templates/header.html: -------------------------------------------------------------------------------- 1 |
2 | 5 |
6 | -------------------------------------------------------------------------------- /templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {% block head %} {%include "head.html" %} {% endblock head %} 4 | 5 | {%block header %}{%include "header.html" %}{% endblock header %} 6 |
7 |

{{ section.title }}

8 | {%block content %} {{ section.content | safe }}{% endblock content %} 9 |
10 | {% block footer %}{%include "footer.html" %}{% endblock footer %} 11 | 12 | 13 | -------------------------------------------------------------------------------- /templates/page.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {% block head %} {%include "head.html" %} {% endblock head %} 4 | 5 | {%block header %}{%include "header.html" %}{% endblock header %} 6 |
7 |

{{ page.title }}

8 | {%if page.date %}{{ page.date }} {%endif%} 9 | {{ page.content | safe }} 10 |
11 | {% block footer %}{%include "footer.html" %}{% endblock footer %} 12 | 13 | 14 | -------------------------------------------------------------------------------- /templates/section.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {% block head %} {%include "head.html" %} {% endblock head %} 4 | 5 | {%block header %}{%include "header.html" %}{% endblock header %} 6 |
7 |

{{ section.title }}

8 | {{ section.content | safe }} 9 | 17 |
18 | {% block footer %}{%include "footer.html" %}{% endblock footer %} 19 | 20 | 21 | --------------------------------------------------------------------------------