@@ -120,7 +120,7 @@ Another response would be to say that when or if machines listen, they listen ![ | |||
# Footnotes | |||
[^Cella, Serizel, Ellis]: LIBRARY: Cella, Serizel, Ellis | |||
[^Cella, Serizel, Ellis]: ![](bib:7c769ce6-5e9e-40d3-96ef-1838a7f57365) | |||
[^Alper]: Meryl Alper, *Giving Voice: Mobile Communication, Disability*, and Inequality (MIT Press, 2017) | |||
[^Rowe, Maier]: LIBRARY; Stefan Maier: [*Machine Listening*](https://technosphere-magazine.hkw.de/p/Machine-Listening-kmgQVZVaQeugBaizQjmZnY), Technosphere Magazine (2018) | |||
[^intelligent_audio_analysis]: ![](bib:827d1f44-5a35-4278-a527-4df67e5ba321) | |||
@@ -129,11 +129,11 @@ Another response would be to say that when or if machines listen, they listen ![ | |||
[^kathy_audio_1]: Interview with [Kathy Reid](https://blog.kathyreid.id.au) on August 11, 2020 | |||
[^andre_audio_1]: Interview with [André Dao](https://andredao.com/) on September 4, 2020 | |||
[^exemplary projects]: See for instance [Data 4 Black Lives](https://d4bl.org/programs.html), [Feminist Data Manifest-No](https://www.manifestno.com/) [add] | |||
[^Crawford and Joler]: LIBRARY Anatomy of an AI | |||
[^Crawford and Joler]: ![](bib:3f8dd486-3e28-45ef-929f-65086850870e) | |||
[^Goldenfein]: LIBRARY (if jake's willing to share?) Jake Goldenfein, *Monitoring Laws: Profiling and Identity in the World State* (Cambridge University Press, 2019) https://doi.org/10.1017/9781108637657 | |||
[^McQuillan]: LIBRARY Data Science as Machinic Neoplatonism | |||
[^McQuillan]: ![](bib:c58be9a5-a599-4a4b-b58f-a07721fc1721) | |||
[^halcyon_audio_1]: Interview with [Halcyon Lawrence](http://www.halcyonlawrence.com/) on August 31, 2020. | |||
[^Virilio]: LIBRARY Paul Virilio, *Sightless Vision* | |||
[^Faroki, Paglen]: LIBRARY; Mark Andrejevic, [Operational Listening (Eavesdropping)](https://youtu.be/OxOKlgsc3_M), recorded on August 10, 2018 | |||
[^Billy Li]: LIBRARY: Li et al, Adversarial Music: Real world Audio Adversary against Wake-word Detection System (2019). For a good introduction to adversarialism, see LIBRARY Goodfellow | |||
[^Virilio]: ![](bib:8558647f-101d-43ff-a531-5df8eb87199a) p.53 | |||
[^Faroki, Paglen]: Mark Andrejevic, [Operational Listening (Eavesdropping)](https://youtu.be/OxOKlgsc3_M), recorded on August 10, 2018 | |||
[^Billy Li]: ![](bib:fac6c1a2-946f-43c4-83f5-e54fd7185c18) For a good introduction to adversarialism, see LIBRARY Goodfellow | |||
[^YS]: ![](bib:26f7b730-9064-464b-b905-fbe63c5d4e4b) |
@@ -10,7 +10,7 @@ disableKinds = ["RSS", "sitemap"] | |||
images = ["/images/ml.gif"] | |||
title = "Machine Listening Curriculum" | |||
giturl = "http://git.metadada.xyz/machinelistening/curriculum-test" | |||
home = "curriculum" | |||
home = "/curriculum/" | |||
catalogprefix = "/library/" | |||
[outputFormats] | |||
@@ -1,17 +1,12 @@ | |||
{{ $s := partialCached "scratch.html" . }} | |||
{{ $currentNode := . }} | |||
{{ $currentDir := "" }} | |||
{{ with .File }} | |||
{{ $currentDir = .Dir }} | |||
{{ end }} | |||
{{ $currentFile := (printf "/%s" .File) }} | |||
{{ $scratch := $s.Get $currentFile }} | |||
{{ if eq hugo.Environment "preview" }} | |||
{{- $gitUrl := .Site.Params.giturl -}} | |||
<div class="headiter"> | |||
<a class="edit-button" target="_blank" href="{{ $gitUrl }}/_edit/master/content/{{ $currentNode.File }}">edit_this</a> | |||
<a class="edit-button" target="_blank" href="{{ $gitUrl }}/_edit/master/content/{{ .File }}">edit_this</a> | |||
<a class="edit-button" target="_blank" href="{{ $gitUrl }}/_new/master/content/{{ $scratch.mantle }}/">add_new_{{ $scratch.mantle }}</a> | |||
<a class="edit-button" target="_blank" href="{{ $gitUrl }}/_new/master/content/{{ $scratch.crust }}/">add_new_{{ $scratch.crust }}</a> | |||
<a class="edit-button" target="_blank" href="{{ $gitUrl }}/_edit/master/PUBLISH.trigger.md">publish</a> | |||
@@ -24,20 +19,25 @@ | |||
<img src="/images/bibliotheke.svg" /> | |||
</a> | |||
<div class="breadcrumbs"> | |||
{{ if ne $scratch.depth "core" }} | |||
<a href="{{ with $.GetPage (printf "/%s/index.md" ($scratch.core)) }}{{ .RelPermalink }}{{ end }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}"><span class="sup">{{ with $.GetPage (printf "/%s/index.md" ($scratch.core)) }}{{ substr .Title 0 1 }}</span><i>{{ substr .Title 1 }}</i></a>{{ end }} | |||
{{ end }} | |||
{{ if eq $scratch.depth "mantle" }} | |||
{{ if isset $scratch "is_in" }} | |||
<a href="{{ with (index $scratch.is_in 0) }}{{ .RelPermalink }}{{ end }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}"><span class="sup">{{ with (index $scratch.is_in 0) }}{{ substr .Title 0 1 }}</span><i>{{ substr .Title 1 }}</i></a>{{ end }} | |||
{{ end }} | |||
<span class="mantlebar"><i> » <a href="{{ .RelPermalink }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}">{{ .Title }}</a></i></span> | |||
{{ end }} | |||
{{ if eq $scratch.depth "crust" }} | |||
{{ if isset $scratch "is_in" }} | |||
{{ $p := index $scratch.is_in 0 }} | |||
<span><i> » <a href="{{ $p.RelPermalink }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}">{{ $p.Title }}</a></i></span> | |||
{{ end }} | |||
<span class="mantlebar"><i> » <a href="{{ .RelPermalink }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}">{{ .Title }}</a></i></span> | |||
{{ $_ := index $scratch.is_in 0 }} | |||
{{ $_ = $s.Get (printf "/%s" $_.File) }} | |||
{{ if isset $_ "is_in" }} | |||
{{ $home := index $_.is_in 0 }} | |||
<a href="{{ $home.RelPermalink }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}"><span class="sup">{{ substr $home.Title 0 1 }}</span><i>{{ substr $home.Title 1 }}</i></a> | |||
{{ end }} | |||
» <a href="{{ with (index $scratch.is_in 0) }}{{ .RelPermalink }}{{ end }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}">{{ with (index $scratch.is_in 0) }}<i>{{ .Title }}</i></a>{{ end }} | |||
{{ end }} | |||
<span class="mantlebar"><i> » <a href="{{ .RelPermalink }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}">{{ .Title }}</a></i></span> | |||
{{ end }} | |||
</div> | |||
</div> |
@@ -15,6 +15,14 @@ | |||
{{ $.Scratch.SetInMap $pageFilePath "child_depth" "mantle" }} | |||
{{ $.Scratch.SetInMap $pageFilePath "plural" (index $triad 1)}} | |||
{{ $.Scratch.SetInMap $pageFilePath "has" (slice (index $triad 2) (index $triad 3))}} | |||
{{ $gp := $.GetPage $pageFilePath }} | |||
{{ $hasmantles := (slice) }} | |||
{{ range index $gp.Params (printf "has_%s" (index $triad 3)) }} | |||
{{ $hasmantles = $hasmantles | append ($.GetPage (printf "/%s/%s" (index $triad 2) . )) }} | |||
{{ end }} | |||
{{ $.Scratch.SetInMap $pageFilePath "has_children" $hasmantles }} | |||
{{ range index $p.Params (printf "has_%s" (index $triad 3)) }} | |||
{{ $childPath := printf "/%s/%s" (index $triad 2) . }} | |||
{{ with $.Scratch.Get $childPath }} | |||
@@ -33,6 +41,14 @@ | |||
{{ $.Scratch.SetInMap $pageFilePath "child_depth" "crust" }} | |||
{{ $.Scratch.SetInMap $pageFilePath "plural" (index $triad 3)}} | |||
{{ $.Scratch.SetInMap $pageFilePath "has" (slice (index $triad 4) (index $triad 5))}} | |||
{{ $gp := $.GetPage $pageFilePath }} | |||
{{ $hascrusts := (slice) }} | |||
{{ range index $gp.Params (printf "has_%s" (index $triad 5)) }} | |||
{{ $hascrusts = $hascrusts | append ($.GetPage (printf "/%s/%s" (index $triad 4) . )) }} | |||
{{ end }} | |||
{{ $.Scratch.SetInMap $pageFilePath "has_children" $hascrusts }} | |||
{{ range index $p.Params (printf "has_%s" (index $triad 5)) }} | |||
{{ $childPath := printf "/%s/%s" (index $triad 4) . }} | |||
{{ with $.Scratch.Get $childPath }} | |||
@@ -46,6 +62,7 @@ | |||
{{ $.Scratch.SetInMap $childPath "is_in" (slice ($.GetPage $pageFilePath)) }} | |||
{{ end }} | |||
{{ end }} | |||
{{ else if eq $t (index $triad 4) }} | |||
{{ $.Scratch.SetInMap $pageFilePath "depth" "crust" }} | |||
{{ $.Scratch.SetInMap $pageFilePath "mantle_has" (index $triad 5) }} | |||
@@ -1,6 +1,5 @@ | |||
{{ $s := partialCached "scratch.html" . }} | |||
{{ $currentNode := . }} | |||
{{ $currentDir := "" }} | |||
{{ with .File }} | |||
{{ $currentDir = .Dir }} | |||
@@ -19,15 +18,15 @@ | |||
<div class="rightcolumn"> | |||
{{ if (not (eq $scratch.depth "crust")) }} | |||
<div class="has"> | |||
<span class="sup">has {{ index $scratch.has 1 }}⁄</span> | |||
{{ if isset $scratch "has" }} | |||
<span class="sup">has {{ index $scratch.has 1 }}⁄</span> | |||
{{ end }} | |||
</div> | |||
<div class="afterhas"> | |||
{{ range index $currentNode.Params (printf "has_%s" (index $scratch.has 1) )}} | |||
{{ with $.GetPage (printf "%s%s" (printf "/%s/" (index $scratch.has 0)) . ) }} | |||
{{ range $scratch.has_children }} | |||
<div class="{{ $scratch.child_depth }}"> | |||
<a href="{{ .RelPermalink }}{{ if eq hugo.Environment "offline" }}index.html{{ end }}">{{ .Title }}</a> | |||
</div> | |||
{{ end }} | |||
{{ end }} | |||
{{ end }} | |||