Skip to content

Commit

Permalink
fix broken bibliography link
Browse files Browse the repository at this point in the history
  • Loading branch information
znmeb committed Dec 15, 2023
1 parent 5c451ab commit 2497a25
Show file tree
Hide file tree
Showing 2 changed files with 195 additions and 195 deletions.
166 changes: 83 additions & 83 deletions README.Rmd
Original file line number Diff line number Diff line change
@@ -1,83 +1,83 @@
---
title: "Command Line Algorithmic Music System (CLAMS)"
author: "M. Edward (Ed) Borasky"
output: github_document
bibliography: CLAMS-website/REFERENCES.bib
---

> "I've never seen a happy clam. In fact, most of them were really steamed." \~ M. Edward (Ed) Borasky
## Overview

`CLAMS` is a text-based interactive environment for composing and performing
music and visuals on a [Pimoroni
PicoVision](https://shop.pimoroni.com/products/picovision?variant=41048911904851).
It can be made to work on other boards using the RP2040 microcontroller, but
you will need additional hardware.

## How does it work?

`CLAMS` is a domain-specific language built on a Forth compiler /
interpreter. The user connects to the board via a serial connection and
enters `CLAMS` / Forth code interactively.

## Why Forth?

> "Premature optimization may be the root of all evil, but it is damned fun!" \~ M. Edward (Ed) Borasky
1. Forth [@brodie2022] is an extensible interactive operating system. It
supports editing, assembling, compiling, debugging and running real-time
tasks from a terminal.
2. Forth is efficient. A well-designed Forth will usually run a task at no
worse than half the speed of a hand-optimized assembly version. `CLAMS` will
have several optimizations built in for the ultimate speed.
3. Forth is lean. There are very few concepts to learn, there is minimal
run-time overhead in RAM, and the whole package takes up much less flash space
than MicroPython or CircuitPython.

## What about Forth standard [@forth2022] compatibility?

Not really. `CLAMS` is an extended subset of the standard. It won't contain
all of the standard's core word set, and it will contain some extensions to
support real-time audio and the RP2040 hardware.

The RP2040 is both limited and complex. It uses the ARM Cortex M0+
instruction set, which doesn't even have a 32-bit multiply that produces a
64-bit product. Division is handled by a co-processor. There are also
co-processors for programmable I/O and interpolation / multiply-accumulate
operations.

That said, if a word in `CLAMS` does exist in one of the standard word sets,
it should function the way it does in the standard. The search order word set
will be implemented, and all of the specialized co-processor operations will
be in specialized word sets.

## What about portability?

Again, not really. There are a number of other micro-controller music boards,
most notably the [Electro-Smith Daisy](https://www.electro-smith.com/daisy
"Electro-Smith Daisy") and the [Rebel Technology
OWL](https://github.com/RebelTechnology/OpenWare "Rebel Technology on
GitHub") platforms. But they have their own SDKs, so there's not much need to
port `CLAMS` to them. There are also a number of audio projects that use the
[Teensy® USB Development Board](https://www.pjrc.com/teensy/ "Teensy Home
Page"), which has a [comprehensive audio
library](https://www.pjrc.com/teensy/td_libs_Audio.html "Teensy Audio
Library"). Also, the Daisy, OWL and Teensy processors are all more powerful
than the RP2040.

By contrast, there's not much for the Raspberry Pi Pico / RP2040. There are
some simple demos, a few do-it-yourself hardware offerings, and there's the
[Allen Synthesis EuroPi](https://allensynthesis.co.uk/modules/europi.html
"EuroPi module"), a Eurorack module with an open source MicroPython software
platform. `CLAMS` will be a different approach.

The overall concept is an interactive language for making music on Raspberry
Pi Pico / RP2040. I'm aiming for [ChucK](https://chuck.stanford.edu/ "ChucK
Home Page") [@salazar2014programming] semantics with Forth syntax - a single
text-based language to implement both the definitions of synthesized
instruments and the sequences of sounds they make, intended for [live coding
/ algorave](https://github.com/toplap/awesome-livecoding "Awesome Live Coding
list on GitHub") performances.

## References
---
title: "Command Line Algorithmic Music System (CLAMS)"
author: "M. Edward (Ed) Borasky"
output: github_document
bibliography: The-Book-of-CLAMS/references.bib
---

> "I've never seen a happy clam. In fact, most of them were really steamed." \~ M. Edward (Ed) Borasky
## Overview

`CLAMS` is a text-based interactive environment for composing and performing
music and visuals on a [Pimoroni
PicoVision](https://shop.pimoroni.com/products/picovision?variant=41048911904851).
It can be made to work on other boards using the RP2040 microcontroller, but
you will need additional hardware.

## How does it work?

`CLAMS` is a domain-specific language built on a Forth compiler /
interpreter. The user connects to the board via a serial connection and
enters `CLAMS` / Forth code interactively.

## Why Forth?

> "Premature optimization may be the root of all evil, but it is damned fun!" \~ M. Edward (Ed) Borasky
1. Forth [@brodie2022] is an extensible interactive operating system. It
supports editing, assembling, compiling, debugging and running real-time
tasks from a terminal.
2. Forth is efficient. A well-designed Forth will usually run a task at no
worse than half the speed of a hand-optimized assembly version. `CLAMS` will
have several optimizations built in for the ultimate speed.
3. Forth is lean. There are very few concepts to learn, there is minimal
run-time overhead in RAM, and the whole package takes up much less flash space
than MicroPython or CircuitPython.

## What about Forth standard [@forth2022] compatibility?

Not really. `CLAMS` is an extended subset of the standard. It won't contain
all of the standard's core word set, and it will contain some extensions to
support real-time audio and the RP2040 hardware.

The RP2040 is both limited and complex. It uses the ARM Cortex M0+
instruction set, which doesn't even have a 32-bit multiply that produces a
64-bit product. Division is handled by a co-processor. There are also
co-processors for programmable I/O and interpolation / multiply-accumulate
operations.

That said, if a word in `CLAMS` does exist in one of the standard word sets,
it should function the way it does in the standard. The search order word set
will be implemented, and all of the specialized co-processor operations will
be in specialized word sets.

## What about portability?

Again, not really. There are a number of other micro-controller music boards,
most notably the [Electro-Smith Daisy](https://www.electro-smith.com/daisy
"Electro-Smith Daisy") and the [Rebel Technology
OWL](https://github.com/RebelTechnology/OpenWare "Rebel Technology on
GitHub") platforms. But they have their own SDKs, so there's not much need to
port `CLAMS` to them. There are also a number of audio projects that use the
[Teensy® USB Development Board](https://www.pjrc.com/teensy/ "Teensy Home
Page"), which has a [comprehensive audio
library](https://www.pjrc.com/teensy/td_libs_Audio.html "Teensy Audio
Library"). Also, the Daisy, OWL and Teensy processors are all more powerful
than the RP2040.

By contrast, there's not much for the Raspberry Pi Pico / RP2040. There are
some simple demos, a few do-it-yourself hardware offerings, and there's the
[Allen Synthesis EuroPi](https://allensynthesis.co.uk/modules/europi.html
"EuroPi module"), a Eurorack module with an open source MicroPython software
platform. `CLAMS` will be a different approach.

The overall concept is an interactive language for making music on Raspberry
Pi Pico / RP2040. I'm aiming for [ChucK](https://chuck.stanford.edu/ "ChucK
Home Page") [@salazar2014programming] semantics with Forth syntax - a single
text-based language to implement both the definitions of synthesized
instruments and the sequences of sounds they make, intended for [live coding
/ algorave](https://github.com/toplap/awesome-livecoding "Awesome Live Coding
list on GitHub") performances.

## References
224 changes: 112 additions & 112 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,112 +1,112 @@
Command Line Algorithmic Music System (CLAMS)
================
M. Edward (Ed) Borasky

> “I’ve never seen a happy clam. In fact, most of them were really
> steamed.” ~ M. Edward (Ed) Borasky
## Overview

`CLAMS` is a text-based interactive environment for composing and
performing music and visuals on a [Pimoroni
PicoVision](https://shop.pimoroni.com/products/picovision?variant=41048911904851).
It can be made to work on other boards using the RP2040 microcontroller,
but you will need additional hardware.

## How does it work?

`CLAMS` is a domain-specific language built on a Forth compiler /
interpreter. The user connects to the board via a serial connection and
enters `CLAMS` / Forth code interactively.

## Why Forth?

> “Premature optimization may be the root of all evil, but it is damned
> fun!” ~ M. Edward (Ed) Borasky
1. Forth (Brodie accessed 2023-10-21) is an extensible interactive
operating system. It supports editing, assembling, compiling,
debugging and running real-time tasks from a terminal.
2. Forth is efficient. A well-designed Forth will usually run a task at
no worse than half the speed of a hand-optimized assembly version.
`CLAMS` will have several optimizations built in for the ultimate
speed.
3. Forth is lean. There are very few concepts to learn, there is
minimal run-time overhead in RAM, and the whole package takes up
much less flash space than MicroPython or CircuitPython.

## What about Forth standard (Forth 200x Committee 2012) compatibility?

Not really. `CLAMS` is an extended subset of the standard. It won’t
contain all of the standard’s core word set, and it will contain some
extensions to support real-time audio and the RP2040 hardware.

The RP2040 is both limited and complex. It uses the ARM Cortex M0+
instruction set, which doesn’t even have a 32-bit multiply that produces
a 64-bit product. Division is handled by a co-processor. There are also
co-processors for programmable I/O and interpolation /
multiply-accumulate operations.

That said, if a word in `CLAMS` does exist in one of the standard word
sets, it should function the way it does in the standard. The search
order word set will be implemented, and all of the specialized
co-processor operations will be in specialized word sets.

## What about portability?

Again, not really. There are a number of other micro-controller music
boards, most notably the [Electro-Smith
Daisy](https://www.electro-smith.com/daisy%20%22Electro-Smith%20Daisy%22)
and the [Rebel Technology
OWL](https://github.com/RebelTechnology/OpenWare "Rebel Technology on GitHub")
platforms. But they have their own SDKs, so there’s not much need to
port `CLAMS` to them. There are also a number of audio projects that use
the [Teensy® USB Development
Board](https://www.pjrc.com/teensy/ "Teensy Home Page"), which has a
[comprehensive audio
library](https://www.pjrc.com/teensy/td_libs_Audio.html "Teensy Audio Library").
Also, the Daisy, OWL and Teensy processors are all more powerful than
the RP2040.

By contrast, there’s not much for the Raspberry Pi Pico / RP2040. There
are some simple demos, a few do-it-yourself hardware offerings, and
there’s the [Allen Synthesis
EuroPi](https://allensynthesis.co.uk/modules/europi.html%20%22EuroPi%20module%22),
a Eurorack module with an open source MicroPython software platform.
`CLAMS` will be a different approach.

The overall concept is an interactive language for making music on
Raspberry Pi Pico / RP2040. I’m aiming for
[ChucK](https://chuck.stanford.edu/ "ChucK Home Page") (Salazar et al.
2014) semantics with Forth syntax - a single text-based language to
implement both the definitions of synthesized instruments and the
sequences of sounds they make, intended for [live coding /
algorave](https://github.com/toplap/awesome-livecoding "Awesome Live Coding list on GitHub")
performances.

## References

<div id="refs" class="references csl-bib-body hanging-indent">

<div id="ref-brodie2022" class="csl-entry">

Brodie, Leo. accessed 2023-10-21. *Starting Forth*. FORTH, Inc.
<https://www.forth.com/starting-forth/0-starting-forth/>.

</div>

<div id="ref-forth2022" class="csl-entry">

Forth 200x Committee. 2012. “Forth 2012 Standard.” Forth 200x Committee.
<https://forth-standard.org/standard/words>.

</div>

<div id="ref-salazar2014programming" class="csl-entry">

Salazar, S., A. Kapur, G. Wang, and P. Cook. 2014. *Programming for
Musicians and Digital Artists: Creating Music with ChucK*. Manning.

</div>

</div>
Command Line Algorithmic Music System (CLAMS)
================
M. Edward (Ed) Borasky

> “I’ve never seen a happy clam. In fact, most of them were really
> steamed.” ~ M. Edward (Ed) Borasky
## Overview

`CLAMS` is a text-based interactive environment for composing and
performing music and visuals on a [Pimoroni
PicoVision](https://shop.pimoroni.com/products/picovision?variant=41048911904851).
It can be made to work on other boards using the RP2040 microcontroller,
but you will need additional hardware.

## How does it work?

`CLAMS` is a domain-specific language built on a Forth compiler /
interpreter. The user connects to the board via a serial connection and
enters `CLAMS` / Forth code interactively.

## Why Forth?

> “Premature optimization may be the root of all evil, but it is damned
> fun!” ~ M. Edward (Ed) Borasky
1. Forth (Brodie 2022) is an extensible interactive operating system.
It supports editing, assembling, compiling, debugging and running
real-time tasks from a terminal.
2. Forth is efficient. A well-designed Forth will usually run a task at
no worse than half the speed of a hand-optimized assembly version.
`CLAMS` will have several optimizations built in for the ultimate
speed.
3. Forth is lean. There are very few concepts to learn, there is
minimal run-time overhead in RAM, and the whole package takes up
much less flash space than MicroPython or CircuitPython.

## What about Forth standard (Forth 200x Committee 2012) compatibility?

Not really. `CLAMS` is an extended subset of the standard. It won’t
contain all of the standard’s core word set, and it will contain some
extensions to support real-time audio and the RP2040 hardware.

The RP2040 is both limited and complex. It uses the ARM Cortex M0+
instruction set, which doesn’t even have a 32-bit multiply that produces
a 64-bit product. Division is handled by a co-processor. There are also
co-processors for programmable I/O and interpolation /
multiply-accumulate operations.

That said, if a word in `CLAMS` does exist in one of the standard word
sets, it should function the way it does in the standard. The search
order word set will be implemented, and all of the specialized
co-processor operations will be in specialized word sets.

## What about portability?

Again, not really. There are a number of other micro-controller music
boards, most notably the [Electro-Smith
Daisy](https://www.electro-smith.com/daisy%20%22Electro-Smith%20Daisy%22)
and the [Rebel Technology
OWL](https://github.com/RebelTechnology/OpenWare "Rebel Technology on GitHub")
platforms. But they have their own SDKs, so there’s not much need to
port `CLAMS` to them. There are also a number of audio projects that use
the [Teensy® USB Development
Board](https://www.pjrc.com/teensy/ "Teensy Home Page"), which has a
[comprehensive audio
library](https://www.pjrc.com/teensy/td_libs_Audio.html "Teensy Audio Library").
Also, the Daisy, OWL and Teensy processors are all more powerful than
the RP2040.

By contrast, there’s not much for the Raspberry Pi Pico / RP2040. There
are some simple demos, a few do-it-yourself hardware offerings, and
there’s the [Allen Synthesis
EuroPi](https://allensynthesis.co.uk/modules/europi.html%20%22EuroPi%20module%22),
a Eurorack module with an open source MicroPython software platform.
`CLAMS` will be a different approach.

The overall concept is an interactive language for making music on
Raspberry Pi Pico / RP2040. I’m aiming for
[ChucK](https://chuck.stanford.edu/ "ChucK Home Page") (Salazar et al.
2014) semantics with Forth syntax - a single text-based language to
implement both the definitions of synthesized instruments and the
sequences of sounds they make, intended for [live coding /
algorave](https://github.com/toplap/awesome-livecoding "Awesome Live Coding list on GitHub")
performances.

## References

<div id="refs" class="references csl-bib-body hanging-indent">

<div id="ref-brodie2022" class="csl-entry">

Brodie, Leo. 2022. “Starting Forth.” FORTH, Inc.
<https://www.forth.com/starting-forth/0-starting-forth/>.

</div>

<div id="ref-forth2022" class="csl-entry">

Forth 200x Committee. 2012. “Forth 2012 Standard.” Forth 200x Committee.
<http://www.forth200x.org/documents/forth-2012.pdf>.

</div>

<div id="ref-salazar2014programming" class="csl-entry">

Salazar, S., A. Kapur, G. Wang, and P. Cook. 2014. *Programming for
Musicians and Digital Artists: Creating Music with ChucK*. Manning.

</div>

</div>

0 comments on commit 2497a25

Please sign in to comment.