Each example below is created by running
racket -t srpnt/studio.rkt -- -s tmp.bin srpnt/dev.rkt
and moving a different audio
definition to the top of the or
form.
--
I recommend listening to the examples in this order. All files are produced by srpnt in raw 8-bit audio form and then converted to AAC with ffmpeg.
Every sample is on the following SoundCloud playlist:
The RP2A03 has four basic channels: pulse, triangle, noise, and sample. The sample channel is not included in these examples.
The first channel is the pulse wave. It has volume control and a duty cycle parameter for the width of the rectangle. Each of the following examples are a C scale with different duty cycles.
- This is a 1/8 width.
- This is a 1/4 width.
- This is a 1/2 width.
- This is a 3/4 width (notice that it sounds the same as 1/4 width)
The second is the triangle wave. It lacks volume control or parameters other than frequency. This is an example of it playing a C scale:
The third is a noise channel. It has volume control and a "mode" setting that creates a metallic sounding wave.
We have a small DSL for describing different instruments. Below are some samples of the different instruments we've implemented.
The pulse channels supports frequency and volume control, so we can produce vibrato, tremolo, and use ADSR to build different sounding constant frequency notes.
The triangle channel supports frequency control only, but we can simulate a tremolo-like effect by turning it off very quickly.
The noise channel also has volume control and a wide range of different refresh frequencies. We use it to build a drum kit.
The examples above include scales for the harmonic instruments, which are derived algorithmically through a simple model of music theory.
We have a tiny DSL for writing down drum measures, as well.
The most exciting part of srpnt is the Bithoven composer. We include a number of samples with explanations for each.
- audio and sheet music
This is composition number 159526143626800468123169814346150250253428891440038894278294580069522599233708729162444490949628638 played with NEStration 3148729328697556916. The NEStration style is specialized to use a diatonic major scale and a tempo of 180 bpm. The composition uses a ABABCABCAB structure and the CAFG chord progression.
- audio and sheet music
This is composition number 49460740888706885790347319921703009205952968322810492028727289302293397538115189299366981890531865 played NEStration 22580309652954949. The style is specialized to a harmonic minor with a tempo of 120 bpm. The composition uses a ABACABA (symmetric rondo) structure with a CFGF chord progression.
- audio and sheet music
This is composition number 151082340486227048364359446585186219936648607538270884717246070010340145820201505988133216403205486 played with NEStration 1076478016002637264. The style uses a natural minor with a tempo of 100 bpm. It uses a ABCBA (arch) structure with a CAFG chord progression.
- audio and sheet music
This is composition number 112689913599145029760399753369564077417508307352863072009096706091575107074490822974755157820327328 played with NEStration 1947063280882832403. The style uses a melodic minor, no drums, and a tempo of 160 bpm. It uses a ABAC structure with a CECG chord progression.
- audio and sheet music
This is composition number 105370697650089816574974105282759653499238341156204192774604369084467049004939613509001127484518264 played with NEStration 13606271740551781396585046. The style is totally unbounded. It uses a ABABCAB structure and the CECG chord progression.