Hello American Allies

The New York Times is reporting that the Trump administration is trying to ‘define trans out of existence’. Of course, you can’t erase people by changing definitions, but it is certainly within the federal government’s powers to make the lives of trans people significantly more difficult. The consequences of the Trump administration’s actions would be extremely dire.

This change in definition is coming from the Department of Health and Human Services. They have an Office of Civil Rights. Alas, this is is headed by a Trump political appointee, but they are reachable by the public. While emailing them is possible, I suspect it’s more useful to send snail mail or fax. The pile of documentation is harder to ignore. There is a service that allows users to send a limited number of free faxes per day. Upload a PDF and send it to your regional office. I’ve put my own letter at the bottom of this post.

I’d also like to suggest you contact your representatives and two senators. Even if you know they agree that trans people deserve civil rights, it’s helpful to them if they can say there’s been an outpouring of concern. And if they don’t agree, an outpouring may help change their minds, especially so close to an election.

Speaking of which, I’d like to encourage you to vote – and to do so strategically. This is an emergency situation for trans people and many other vulnerable groups. Voting for a Democrat won’t overthrow capitalism, but a lot of people live in the wedge issues that separate the parties. Vote for the people who can’t vote.

Fellow Americans abroad, it’s not too late. You can still request your absentee ballot. If you’ve requested your ballot and haven’t received it, you can get a backup ballot for overseas voters called the Federal Write-in Absentee Ballot. Depending on where you are elligible to vote, some states will accept this ballot even if you have not previously registered.

 

 

Example Letter

Dear Sir or Madam,

I am writing to oppose the proposed change with regard to gender. Making this fixed, genetic, and unchangeable flies in the face of medical opinion and common sense. A significant minority of people do change their genders. Trying to prevent this is a serious violation of their civil rights with no discernable state interest. This is unamerican.

Relying on genetics is also unscientific, as there are many people who’s physical sex characteristics are at odds with their genes. The Olympics quit using this definition after a woman who was found to be genetically male later gave birth – thus showing that the tests are not reliable even for people who are not transgender.

I strongly encourage the department of health and human services to do it’s job of protecting health instead of going out of it’s way to harm transgender people.

Thank you very much for your time and consideration.

Sincerely,

More on the Federation

Previously, I posted about the Federation – that is, the social network running on the Diaspora* protocol. In that post I mentioned that moderation, in general, is not great on many pods.

The very next post to show up on my stream was a transphobic meme. On the federation, the strong anti-censorship position means that for some users, the block button is controversial! Unfortunately, the mobile app I use(d) for that network was developed by somebody who felt that way, and thus I saw the meme and had no means to block it from my phone client.

But I also claimed that rolling your own pod is fairly difficult and this turns out to be not entirely correct! If you run a small(ish) pod, you (and some community members) can set the moderation rules to be as strict or lenient as you’d like. If you moderate against transphobia, users on your pod won’t see transphobia in the LGBT hashtag unless one of your users posts it, which you can take action on. Or they’re following a transphobe, which, again, they or you can block. Pods are communities, so it’s possible to establish a respectful community of a manageable size.

The easy way to deploy a pod, which I just learned of, is on a raspberry pi, via syncloud.

It’s also possible to join the federation of Diaspora pods via Hubzilla and Friendica, but you may find that the look and feel of a regular Diaspora pod is a bit more user friendly, especially if you’re hoping to attract your non-technical friends.

Because Diaspora is designed around privacy concerns, if you are running an online support group or something similar, rolling your own pod for that usage is an example of a good use-case. There is a lot right in how Diaspora was designed and small pods, deployed for communities offer a lot of good functionality. If you want a social hook on your project and you don’t want to use trumpbook, putting up a pod might be the right choice for you.

The Federation

Remember the days before Facebook, when people were on MySpace or Classmates Reunited, or Friendster? Alas, all those sites lost too many users and stopped making money and shut down. And the sites that were supposed to kill Facebook, like Ello, which failed to gain critical mass, never made any money and shutdown. Or Diaspora*, which everyone was on for 5 minutes, but it was kind of alpha, so people mostly wandered away from and then it didn’t shut down.

Diaspora* wasn’t a commercial project and never needed to make money for investors. It just needed to fundraise enough to keep the servers turned on, which it did. Some people kept using it. And that’s all it takes for a non-corporate network: some interested users and paying the server fees.

Diaspora’s software is still being developed and is a lot more robust and faster than it was during it’s 15 minutes of fame. Of course, the servers have fewer users than they did back then, but are still fairly gigantic.

Facebook’s active user base is a lot bigger than many countries, so they have a lot of computers behind the scenes, working together so that, to you, it looks like everything is one one computer. This requires a lot of central control. Diaspora doesn’t follow this model. Instead, it’s more like email. If I use hotmail and you use gmail, we can still send each other letters, we just know that our email address is our users name AND the server name. Diaspora is like that, so my diaspora address is celesteh@joindiaspora.com. It looks like an email address because it has a user name and a server name, but it’s not for email, it’s for social networking.

Hotmail and gmail are operated separately, but they both understand how to send email. Similarly, all the diaspora servers, called ‘pods’, are separate from each other and are run by different people or groups of people. There are less than 300 pods, many of which have tens or hundreds of thousands of user accounts. (Maybe including your account from back in the day, waiting for you to log back in.) All of these pods, together with their ability to communicate is called ‘The Federation.’

The Federation is still going and has more active users than you might guess. A lot of people leaving facebook found their old diaspora accounts and logged back in! But they probably found that most of their old contacts weren’t still active. I still have my old account, but I don’t log in every day. Diaspora is built to protect privacy and I can think of some great use cases, but it’s hard to deploy. It’s also built to resist censorship, which was a major issue at the time it was designed, which means also that it’s hard to moderate.

Part of the difficulty of moderation is the size. It would take a large team to deal with tens of thousands of users, since figuring out if somebody is misbehaving requires a lot of time and looking at context. But also, the anti-censorship values have lead to a lot of moderators to take a hands-off approach and thus they tolerate racist posts and hate speech because they don’t want to censor. They say people can block each other, but I don’t find this to be sufficient. Of course, somebody setting up their own pod could take a different approach, but, again, they’re still difficult to deploy.

The Federation, for all it’s faults, does respect your privacy and isn’t trying to make money off your data. It’s not my favourite part of the internet, but it’s better than facebook. I do still log in. It is possible for communities of respectful groups to arise and most of the conversations I have on there are pleasant.

If we know each other on twitter or facebook, do connect to me on diaspora and say hi. I’ll give a Blessing to anybody leaving facebook!

Introducing Blessings – a new kind of #shitcoin

#ICO Announcement!

Introducing Blessings – a new kind of #shitcoin.

Coins are minted when I [henceforth: the issuer] ‘bless’ a person [henceforth: the owner]. This is worth one coin, which belongs to the person who receives the blessing – the owner. This blessing takes place via a post to social media which @s the account who receives the blessing. An entry for this is entered into the ledger.

Coins can be sold and traded, also via social media, by making a post announcing that this has occurred. This must @ the new owner and also the entity acting as the banker, who will update the #ledger.

Coins may also be redeemed – in this process, they are returned to the issuer in exchange for short musical compositions. Owners of coins may occasionally be asked for favours by the issuer, but, as is usual with favours, have a right to refuse.

There will be a staged rollout of gradually upgrading the ledger backend.

[first brain] A shitcoin monetising relationships on social media. [second brain] A shitcoin with the ledger in a google doc. [third brain] A shitcoin with the ledger managed by a fediverse server. [fourth brain] A shitcoin where every coin has an identity on the scuttlebutt mesh network with a activitypub bridge

In version 1.0, the issuer will also act as the banker. The ledger will be manually updated in google docs. This ledger is viewable to all. It will contain: the URL of the ledger, all issuer accounts and all banker accounts. This is currently online at: https://docs.google.com/spreadsheets/d/1VhEIdQ8lya6BxS8IzljquTQ5MkAP8qtpZfK_J4FfXEw/edit?usp=sharing

Every coin will have a unique ID, the owner’s social media account, and the URL of the post in which the change of ownership occurred. Each coin will maintain a history of owners and transactions. Coins are atomic units and can not be split.

Version 2.0 will automate banker activities – each coin and the banker will have an #activitypub account on a server dedicated to the currency. Each coin will post a status as it’s ownership changes and be able to respond to queries about it’s current status.

In version 3.0, each coin will have a #scuttlebutt ledger and thus their record of existence will be maintainable over mesh, and they won’t require a server or network. However, there will be a bridge to activitypub to mirror all ownership changes to the .

FAQ

  1. Q: How does someone get blessings?

    A: People who wish for blessings may ask for them. They may also be minted in response to especially good shitposting or acts of friendship.

  2. Q: How are they redeemed for musical compositions?

    A: Owners wishing to redeem their blessings should contact the issuer to discuss what sort of music they would like.

  3. Q: Will there be support for additional social media platforms?

    A: By design, coins can only be minted on platforms used by the issuer.

  4. Q: Will there be a Diaspora* mirror for when the coins get their own social media presence?

    A: The issuer will happily deploy a Diaspora* mirror if one gets written, but has no current plans to develop one.

  5. Q: What if an owner moves to a new social media account?

    A: This would be handled just as if it were a trade between two people on separate accounts.

  6. Q: What if an owner’s server goes offline and they cannot make a post about the coin’s new ownership?

    A: The owner must contact the banker or issuer with evidence that they are the same person.

  7. Q: Are the coins susceptible to hacking or impersonation?

    A: Just like every other digital currency, there are many vectors in which coins can be permanently lost or stolen.

  8. Q: What is the crypto aspect of this currency?

    A: Blessings are digital currency shitcoins, but will not be until version 3.0.

  9. Q: Blessings rely on a single authority to facilitate trades. What happens if the issuer dies or leaves social media?

    A: All relationships end eventually and when they do, their value lives on in memory. The value of blessings will also be in their record and memory, but will no longer generate new records or memories.

Source code for Christmawave – overlap, duration and repetition

This is the fourth part of a series of posts about how I created my album Christmaswave. Previously, part 1 posted a list of questions and answered the first two of them: ‘What sample am I going to play?’ and ‘How many times am I going to divide it in half?’. Part 2 answered the question, ‘Once it’s chopped into little (or not-so-little) pieces, which one of them am I going to play?’. Part 3 talked endlessly in the meandering way of hangovers about playback rates.

One thing I have not addressed is how I picked which parts of source material to use. Unless the words were compelling in some way, I tended to go for phrases that were instrumental. In some songs, this left me only the intro and the outro. This is why most of the pieces have source material taken from multiple versions of the same song.

How much should an event overlap whatever comes after?

Normally, you would do this by setting the \legato part of the event, which is ‘The ratio of the synth’s duration to the event’s duration.’ I set this to 1.1 in most of the pieces, which helped make up a bit in case the slicing was in slightly the wrong place.

Most I varied:


\legato, Pwhite(0.8, 1.5)

Some depended on the duration of the it of sample I’m playing. This is what I did with Sledge Trudge


\legato, Pfunc({|evt|
var dur, legato;
dur = evt[\dur];
legato = 1;
(dur < 0.01).if({ legato = 2}, { (dur < 0.07). if({ legato = 1.5}, {legato = 1}) }); legato })

How long should I wait before going to the next thing (which might be a repetition of what I just did)?

This is a question as to what to put for the \dur part of the event, which depends on the number of frames of sample that we're playing, the sample rate of it, and the playback rate.

I pulled a lot of my source material from youtube - by using a browser plugin to download and convert to mp4 and the using audacity to convert to wav files. These files were often 48k, which is the standard for film, but audio is generally at 44.1k, so I did have to take the source file's sample rate into account.

It makes sense to calculate the start frame and duration together. This example is from Out in the Cold:


[\startFrame, \dur], Pfunc({|evt|
var buf, startFrame, dur, div, start, frames;
start = evt[\start];
div = evt[\div];
buf = evt[\buf];
frames = buf.numFrames;
startFrame= frames * (start/div);
rate =evt[\rate];
dur = (frames / buf.sampleRate) / rate * div.reciprocal;

[startFrame, dur]
})

How many times should I repeat this thing?

The glitchy repeating of the same event multiple times is a repetition of the entire event, not just some parts of it. I did this with Pclutch, which has a slightly weird syntax.


Pclutch(
pattern,
connected
).play

The pattern is just your Pbind or similar, but the connected part is slightly odd. If it's true, the Pbind is evaluated to produce a new value. It's it's false, the previous event is repeated. It's possible to use a pattern to control this.

This is the pattern I used for Walking in a Winter No Man's Land. 0 is equivalent to false and 1 is equivalent to true.


Pseq([0, 0, 0, 0, 1,
Prand([
Pseq([Pn(0,2), 1],1),
Pseq([Pn(0, 3),1],1),
Pseq([Pn(0,4), 1], 1)
],100)
])

Starting with the Pseq means that the Pclutch will repeat 4 times, then make a new event. After that, it picks randomly from 3 Pseqs. The first repeats twice, the second 3 times and the third 4 times. It will randomly pick between these repetitions for 100 times and then stop.

Source code for Christmawave – picking playback rates

This is part 3 of a series about how I created my album Christmaswave. Previously, part 1 posted a list of questions and answered the first two of them: ‘What sample am I going to play?’ and ‘How many times am I going to divide it in half?’. Part 2 answered the question, ‘Once it’s chopped into little (or not-so-little) pieces, which one of them am I going to play?’

One thing I’ve talked about in both posts is balancing a desire for predictability in running the code and in allowing for random variation. This may seem strange for a studio album, but with my previous Christmas album, 12 Days of Crimbo, I did end up playing one of the pieces, Little Dubstep Boy live at an algorave in Birmingham, so it is possible some of these pieces may have a live afterlife.

Perhaps more importantly, allowing for variation allows the discovery of good juxtapositions, which can be made more likely in subsequent revisions of the code. It also makes making the pieces themselves more interesting. Listening to the same thing over and over again in a DAW can get tedious, but subtle changes give something to listen carefully for, keeping one’s ears fresh. I have way more skill in coding pieces than trying to piece them together manually and allowing randomness is an important part of my process.

What speed am I going to play the next bit at?

Having decided which sample to play, how small to chop it up and which subsection of the sample to play, the next question is what speed to play it back at. This is a question the rate at which I playback the buffer, such that both speed and pitch are effected.

A lot of the Vaporwave I’ve listened to seems to play back their samples at slower than the original speed. It also sometimes switches speeds, so that both pitch and timing jump. I like this effect and chose to copy it.

I thought of the timing changes in terms of scales. In Just Intonation, scale steps are given as fractions between the ratios 1/1 and 2/1, where 2/1 is one octave higher than 1/1. Because I wanted slower speeds, I adjust downwards, so that the ratios I used were either between 1/2 and 1/1 or between 1/4 and 1/2. These ratios can then be used directly as the rate parameter in a PlayBuf.ar ugen.

Obviously, almost all of the source material is in 12TET – that is to say: 12 tone equal temperament, the tuning one finds across the white and black keys of a standardly-tuned piano. Any tuning I apply on top of that is more or less in conflict with the original. This can be minimised by only using one rate at a time and repeating it across several subsequent bits. By sticking to one rate for a while, a change later on becomes roughly analogous to a key change. It would have been possible to have a set of sensible key changes that work with the standardised harmony conventions of the original song, but this is not what I did.

Long story short: I picked some scales and tunings

The first piece I worked on, Have Yourself a Scary Christmas is based on Have Yourself a Merry Little Christmas, sung by Judy Garland. That piece and especially that performance of the piece has quite a bit of emotional complexity. The ambiguity of the piece is apparent even in the title, which is not ‘Have a Merry Christmas’, but a more emotionally strangled ‘Have Yourself a Merry Little Christmas’, like someone trying unsuccessfully to be friendly to an ex they’re desperately not over. The music itself is ambiguous about whether it’s in a major key or in it’s relative minor. Garland’s performance adds to this further, soundling slightly drunken and sliding the tuning around in a way that sounds like she’s papering over crushing unhappiness. This effect is especially apparent if you listen to the song slowed down by a factor of 4 with Paulstretch.

In order to draw out the sadness a bit, I used a Romainian minor scale. This is part of the included scale library that comes with the SuperCollider Scale object. I then randomly picked ratios from the scale.


\scale, Scale.romanianMinor(\just),
\rate, Pfunc({|evt|
var scale, degree, rate;

scale = evt[\scale];
degree = (Array.series(scale.ratios.size, 0, 1) ++ [0, 0, 0, 0, 1, 1, 1, 2, 2, 3]).choose;
rate = scale.ratios[degree] * [0.25, 0.5, 0.5].choose;
rate
})

Support for scales is built into Patterns, but it’s most commonly used to compute frequencies, not playback rates.

Almost all the pieces I made used minor scales. I used trial and error to pick which scale worked best with which samples. For all the pieces, I picked degrees randomly and never used anything like a Finite State Machine or a random walk, even those are usually well-suited to picking scale degrees.

In most pieces I repeated the chosen rate, using Pstutter. This is code from Santa Loves You:


\scale, Scale.hungarianMinor(\just),
\degree, Pstutter(8, Pfunc({|evt| evt[\scale].degrees.size.rand}),1),
\rate, Pfunc({|evt| evt[\scale].degreeToRatio(evt[\degree])}) * (2/3),

The Pstutter on the scale degree repeats the degree 8 times before picking a new one with the Pfunc. The rate is calculated from the degree. Because this piece uses voices, I’ve decided to stay closer to a normal playback rate. Using 2/3 instead of 0.5 or smaller means that the samples will sometimes play out faster than their original pitch.

Source code for Christmawave – what segment do I play next?

Previously, I talked about the method I used for creating the Christmaswave pieces and the issues this raises. My last post answered the questions ‘What sample am I going to play?’ and ‘How many times am I going to divide it in half?’ and, alas, the answer for the latter of those was hopelessly over complicated. Doing everything in terms of powers of two was not always a good approach, even for this project. Some songs are in 3/4 time and won’t do well with these divisions. Also, a lot of Christmas classics are performed in a jazz style and thus have a strong triplet feel. Play any Bing Crosby Christmas song at 1/2 speed and the swing becomes extremely apparent. It becomes ludicrously strongly swung at quarter speed. Well, get back to these issues a bit later on.

Once it’s chopped into little (or not-so-little) pieces, which one of them am I going to play?

Randomly

Over the course of the album, I tried a few approaches. For several of the songs, I just picked randomly. This did work, but this means that some runs of the code come out with much better results than other runs of the code. Random number generators in The Santopticon (He Sees You) meant I had to try recording that piece 14 times before I found the version I wanted to use.

In order

Another approach I used was to start at the beginning of the sample and move towards the end of it. This copies the arc of the original and makes the playback/recording more reliable, although it does remove some opportunities for serendipity.

this is the code I used for Der Tannenbaumherumtanz:


\env, Pseg(Pseq([0, 1]), 200),
\start, Pfunc({|evt|
var frac, start, div;
div = evt[\div];
frac = evt[\env];
start = frac * evt[\div];
start = start.asInt;
"div is %, start is %, frac is %".format(div, start, frac.round(0.001)).postln;
start;
}) + Pwhite(-1, 1),

\env has a value in it that goes from 0 to 1 over 200 seconds, which was the length of this section.

\start holds the number of the division to start on – for example, if there are 4 divisions, it might hold 0, 1, 2, or 3. It computes this by first getting the \div, computer previously in the event. Then it looks at \env, which, as it goes from 0 to 1, is a fractional representation of how far we are through the section. A quarter of the way through, it should be 0.25. At the half way point, it should be 0.5, etc. It puts this in the variable frac.

I multiplied frac by the number of divisions. Then, because this number will always be a fraction, I convert it to an integer, so as to get a good index number. This rounds it.

Finally, in order to make this slightly less predictable, I take the result of that calculation and subtract 1, do nothing or add 1.

Random Walk

In Lettuce, No, I picked a section adjacent to the one just played. This tends to meander around the middle of the sample, but the content of the neighbouring divisions are always related to each other, so the results tend to sound good without being too predictable.


\start, Prout({|evt|
var div, start, pos;

pos = 0; // starting position

inf.do({

div = 2.pow(evt[\pow]).asInt;
start = (pos*div).asInt;

// figure out pos for next time
pos = start + [-1, 1, 1].choose; // tend to increment
pos = (pos/div).abs.min(1);

evt = start.yield;
})
})

The Prout returns the start index, but also, while doing so, computes the position. This position is a fraction, like \env above. However, instead of moving from 0 to 1, it meanders around, tending to move towards 1.

It does this calculation based partially on the number of divisions. So if the sample is cut in half, it will tend to jump from 0 to 0.5 in a single step!

The pos must be between 0 and 1, so it takes the absolute value and then compares it to 1 and takes whichever of the two values is smaller.

It would have been possible to do this in a way less dependant on the divisions, for example, by deciding the position should be an integer between 0-127 and then computing a faction based on that. This would meander quite differently as it would be freed from the divisions actually used in the piece. I have no examples of this approach from this album, but will give it a try the next time I’m cutting samples!

Source code for Christmawave

If you follow my podcast, you’ll note I put out a vaporwave-ish Christmas album, Christmawave. It’s a free download on Bandcamp, but I’m asking those who can afford it to donate to the Hackney Winter Night Shelter.

Almost all of the pieces are constructed using variations on one algorithm. I found hoary, old baby boomer Christmas favourites and then took the instrumental sections, which was sometimes just the intro or the outro. All of the songs were in 4/4 and most of the instrumental parts where cut into either in 2 or 4 bar phrases. This means every sample is divisible by many powers of 2 and can be cut in half several times before it loses musical/rhythmic meaning.

I made these cuts, played the section of the sample with some stuttering and then went on to another section of the sample. This method requires some decision making:

  1. Which sample am I going to play?
  2. How many times am I going to divide it in half?
  3. Once it’s chopped into little (or not-so-little) pieces, which one of them am I going to play?
  4. What speed am I going to play that bit at?
  5. How much should it overlap whatever comes after?
  6. How long should I wait before going to the next thing (which might be a repetition of what I just did)?
  7. How many times should I repeat this thing?

All of the pieces answered these questions in slightly different ways. (Or very different ways, in the case of question 1!) Some of the structuring of how I thought about these questions and how I solved them have to do with how the Pattern library works in SuperCollider.

What sample am I going to play?

In almost every case, I switched samples based on how much time had passed since the start of the piece. I used Ptpars to start different sections.

How many times am I going to divide it in half?

Another way of asking the question is, ‘what power of 2 am I going to use?’ I did this a few different ways. In most cases, I stuffed this into part of the event I called pow. Here are some ways I figured out what power of 2 to use:


\pow, Prand([0, 0, 0, 0, 0, 1, 1], inf)

Then later, on I could go from that to powers of two:


\div, Pfunc({|evt|
2.pow(evt[\pow])
})

(Usually, I would compute the \div in a larger Pfunc that figures out more things.) The advantages of figuring out the power of 2 instead of just having a Prand full of 1, 2, 4, etc are that this is harder to screw up. I don’t need to worry about a stray 3 sneaking in, and, if a sample is longer, I can add some number to the \pow to make the \div bigger.

Another way I computed the \pow was using a Finite State Machine. This was completely overkill, but I’ll walk you through how it worked.

What I wanted was to have a possibility of a \pow being as small as 0 or as big as 8, but not to jump from one of those numbers to the other. Instead, I wanted a route going through intermediate numbers, in which it could potentially get to an 8 and have a path back to 0. I wanted a way for it to wander from one extreme to the other.

A FSM offers a way to give a path. This is what the code looks like from Funky (The Slow Jam):


\pow, Pfsm([
#[0], //start
2, #[3], //0
Prand([0, 0, 1], 1), #[1, 2], //1
Prand([0, 1, 2]), #[1, 2, 3], //2
Prand([1, 2]), #[3, 4], //3
Prand([0, 1, 2]), #[3, 5], //4
Prand([2, 3]), #[4, 3, 5, 6], //5
Prand([3, 4]), #[4, 3, 5, 7], //6
Prand([3, 4, 5]), #[4, 3, 5, 6] //7
], inf),

Pfsm is the pattern library that does state machines. It takes an array. The first item in the array is an array of what states it can start with. Next comes pairs. Each pair is a state. The first pair is state 0. The second pair is state 1. The third pair is state 2, etc. The first item in a pair is the output. In the example above, the output of state 0 is 2 and the output of state 1 is Prand([0, 0, 1], 1).

The second item in the pair is an array of one or more integers. The numbers in the array are the states you can go to next. So with state 0, the array is ‘#[3]’, so it goes on to state 3. When it gets to state 3, it produces the output, which is Prand([1, 2]) and then looks where it can go next, which is ‘#[3, 4]’. That is, it can go state 3 again, or it can go on to state 4.

I could draw a map of this (which would reveal that there is no path to states 1 and 2 – oops).

The FSM described in the code above
In the graph, you can see a lot of arrows pointing up and few pointing down, only along a path that goes through all the states. Thus, it’s relatively unlikely to reach state 7.

Because Pfsm is just another pattern, I could add 1 or 2 to the output of it in the case of a particularly long sample and it would gracefully handle the maths.

Answers to the other questions will be forthcoming in following posts!

The Dead Shopping Mall Project

For various regions, shopping malls across America (and in other places) are dying. Many have only a few shops left in them. A few, somehow, manage to thrive.

Many Gen-Xers spend their formative years in shopping malls, walking endlessly in circles. The experience of these malls was not only a visual panorama of their shiny flat surfaces, but also very much their acoustics. The indoor stores separated themselves from the indoor mall by using piped in music, which informed shoppers that they were entering a different space. The music used was chosen to signal what demographic the store hoped to attract. Stores for teens played the top 40 that appealed to that age group.

Department stores and the mall itself played more neutral music, trying to signal a more broad appeal. All of this was set in space full of talking, foot traffic, and young people, set against very reflective surfaces. It was not just the music chosen, but the acoustic that differentiated spaces.

Smaller stores had nearby walls, dampened with hanging clothes or other wares, and thus their reflections were different than the more open mall.

As malls disappear, their unique sonic environment disappears also. It’s impossible to recapture what they were like when filled with people, unless you somehow entice people to come in. But the echoes of the sonic space and the dimensions of the architecture can be archived in a form that’s usable for people who would like to experience what being in such a place sounded like.

This usable archive can be made via a short audio file called an Impulse Response. It is a recording of the echoes of the space. Below, you can find instructions on one way to make such a recording.

These recordings should be made, as a form of acoustic ecology and of memory. So the sounds can still be used even as the spaces themselves vanish.

How to take an impulse response with two mobile phones.

  1. You will need software for your computer: audacity and fscape
  2. You will need to decide which of the phones has the better microphone. Put a good-quality audio recorder on it. This is your recorder-phone.
  3. Put this audio file on to the other phone. This is your player-phone.
  4. Before you head to the mall (or whenever you switch phones), take a calibration recording.
    1. Play the file from the player-phone while recording it with the recorder-phone. Hold the recorder-phone so it’s microphone is as close as possible to the player-phone’s speaker.
    2. Always record at the best possible settings. Try to use a non-compressed file format like WAV or AIFF.
    3. Make a note of which file is your calibration recording.
  5. Go to the mall and pick out what spaces you would like to take an IR in, then take them.
    1. Decide how far away you want the two phones to be from each other. If the phones are further apart, you get more of the sound of the space. If they’re closer together, the IR will be more intimate. If the spaces is noisy, it might be hard to record at further distances. (If you’re unsure or want options, you can do recordings at multiple distances.)
    2. Play the sound from the player-phone while you are recording with the recorder-phone. Always record at the best possible settings and try to use an uncompressed file format like WAV or AIFF.
    3. Make a note of what mall that you’re at (ie ‘Valley Fair, San Jose, California’), where in the mall you are (ie ‘food court’) and an estimate of the distance (ie ‘2 meters’). Make a note of which recording you’re referring to (either by writing it down or editing the file name).
  6. When you get home, transfer all the recordings to your computer. If you have not already given them descriptive names (ie: ‘ValleyFairFoodCourt2mRec.wav’), do so now.
  7. Open your calibration recording in Audacity, normalise it and reverse it. (These options can be found under the effects menu). Then export it as ‘callibration-rev.wav’. (Export is under the file menu)
  8. Repeat the following process with all of the mall recordings you made:
    1. Open the recording in Audacity, and normalise it. Export it with a descriptive name (ie ‘ValleyFairFoodCourt2mNrml.wav’)
    2. Open Fscape. Under the menu ‘New Module’, select ‘Spectral Domain’ > ‘Convolution’
    3. For the input file, select the mall recording
    4. For the ‘Impulse Response’, put the reversed calibration file, callibration-rev.wav.
    5. Give the output file a descriptive filename (‘ValleyFairFoodCourt2mConv.wav’)
    6. Select Render
    7. Open the output file in Audacity. In the middle of the file, there will be a loud part. Use your mouse to select just the loud part (zoom in to get it as tight as you can. If there’s a bit of lead in and a bit of fade-out, get that too).
    8. Hit the ‘z’ key to slightly adjust your selection
    9. Under the file menu, select ‘Export Selection’. This is the finished impulse response! Give it a descriptive file name (‘ValleyFairFoodCourt2mIR.wav’)
    10. You can erase your source files when you’re done if you want. Be sure not the erase the reversed calibration file until you’ve created all the finished IRs
  9. Now that you’ve got the IRs, please send them to me! Or, better, post them to archive.org and send me the links.
  10. You can use them on recorded audio to make it sound as if it took place in the mall! If you have reverb software, you can use the IR you just made as the IR, or you can use Fscape. Do a convolution with your source file, using the IR you made as the Impulse Response. The output will have the sonic characteristics of the mall!

Teach about trans people

In our current political climate, I think it’s important for teachers and academics in every discipline to take a stand in favour of diversity and inclusion. One important way we can do that is to highlight contributions in our field by members of minority groups. One way into this in any discipline is by including some history. So in computer science, teachers could mention that Alan Turing was gay and that Grace Hopper, inventor of the compiler (and, indeed of the idea of compiling), was a woman.

When teaching music and presenting a piece of music to students, I give a few biographical notes about the composer which are mostly related to their musical background and influences. This is also a good time to mention any minority status. This is important because students will otherwise tend to assume that everyone is a cis, straight, white man. It can seem a bit weird to mention that someone is gay, for example, without other context. There are a few ways to address this.

If a person’s minority status is known to effected their opportunities, then this is is a good way to bring it up. To take an example, Milton Babbit was going to be the first director of The Columbia-Princeton Electronic Music Center. When they realised he was Jewish, they rescinded the offer and hired someone else. After a year, they came back to Babbit and re-offered him the job. It’s good to tell students about this and condemn it, to let them know that discrimination was more recent and widespread than they may have imagined and to give the idea that it was wrong and should be opposed.

Another way to bring up somebody’s status as a minority applies if they were a member of a milieu at least partly defined by minority participation. So, for example, a lot of jazz musicians are black and, indeed, some American forms of free improvisation were called “black music”. In general, mentioning milieus is good because it gives students a sense of larger scenes and places they might do additional research. It also communicates that minority involvement was significant and larger than the few individuals discussed in class.

Otherwise, a way to bring up a person’s membership in minority groups is to just tell students you think it’s important to mention it so they know the field is diverse. This is also good because it demonstrates that inclusion is valuable.

It’s important not to make somebody’s status as a minority the defining thing about them. They’re a topic for the class because they relate to the subject the class is covering, not because they’re a minority. One must strike a balance so as to communicate that minorities have historically been part of a discipline and contributions are important and will continue. Over-emphasising their minority status can backfire and make it seem like they’re being highlighted for being weird and different. I try to bring minority community membership up just once and then not mention it again unless it’s relevant in their work.

With contested identities, such as trans people,talking about their background models how to speak respectfully. It’s important that if a student starts giggling or otherwise treating this as a joke, that they’re told to stop. Here is a guide for how to talk about trans people in the classroom.

  • If the person is not living, you should definitely mention that they were trans.
  • If the person is living, you can only say they were trans if the person has consented to this by being public about their trans status.
  • If a person has transitioned to being a woman, the term to use when talking about them being trans is “trans woman” and the pronoun to use is “she”. If they have transitioned to being a man, the term to use when talking about them being trans is “trans man” and the pronoun to use is “he”. If someone has transitioned to a non-binary gender identity, the term to use when talking about this is “enby” (which is a pronunciation of the initials N.B.) and the pronoun to use is “they”. In every case, if the person has expressed a different label or pronoun, you should follow their preferences.
  • Always use their current pronoun, no matter when in their life you are speaking about them.
  • Do not bring up somebody’s previous name without a good reason. Mention it as little as possible.
  • If any of this makes you feel awkward, practice this part of your classroom presentation on a friend until you feel normal about it.

To give an example of how I might talk about this:

Wendy Carlos has done a lot of work on spatialisation and has some good blog posts about it – I’ve put the links on Moodle. She is an American composer who started out at Columbia-Princeton, but then went in a less experimental/more popular direction. She’s best known for working with Moog synthesiser and worked directly with engineers there to design modules, which she used to do several film sound tracks, including Tron and A Clockwork Orange. She initially made her name with Switched on Bach which was a recording of Bach pieces done on synthesiser. This album was hugely popular, made her famous and made a lot of money. She used some of the proceeds of the album to fund her transition, which she kept secret for nearly a decade- dressing up as a man when she appeared publicly because she feared discrimination. Fortunately, when she finally did disclose in 1979, nothing much bad came of it, but it must have been miserable to spend so many years in (reasonable) fear of a backlash.

The popularity of her work shows a strong popular appetite for new timbres, but in a familiar context, like Bach. We’re going to listen to a piece by her …

When you’re talking about a member of any minority group, it’s best to assume that at least one of your students in a member of that community. the intent is to be respectful and to make that student feel included, while at the same time giving other students the idea that members of this minority groups belong in their field. Never be neutral about discrimination.

It’s impossible to get this right every time. Sometimes talking too much about discrimination can traumatise the students who also experience it, or glossing over it can fail to condemn it forcefully enough. The important thing is to keep trying to include this and to get a feel for the students you’re teaching, as every group and every institution will be different. You may find, for example, that student comments about works by women tend to be more negative than works by men. One way you might address this is to present the works first and ask for comments and only talk about biographies afterwards.

Keep trying things out. We can make a positive difference in our teaching, no matter what our subject it.