I kept playing with the ENTROPY library, and it can generate small values faster than I thought, so I increased the speed in mode1() to 180 notes per minute. I also tried the code on an Arduino clone with a 32U4 microcontroller, and it kept up with its larger sibling. I have many smaller versions, so I could connect them to harvest random numbers and generate random notes at an absurd rate.
mode2() will support multiple instruments playing simultaneously. I took a long time thinking about how to accomplish this because past iterations worked but were clunky. Each mode has improved upon the previous, so mode3() may not only use scraps from its predecessors, but I have ample memory in this controller. I have yet to reach 20% capacity and have already installed my libraries.
I moved the pitch controls to potentiometers and programmed them so that when they overlap, the lower pitch will take precedence. With pitch controlled this way, I can turn the upper pitch to zero and control the overall sound with a single potentiometer. I reprogrammed the encoders to become my channel selector and note offset. The channel will allow any number between 0 to 15, and the offset will be -24 to 24 notes or ± two octaves. I removed the potentiometer values from the screen because they interfered with the instrument name and caused jittering whenever they experienced EM interference. The colored knobs will be their feedback, but I added a serial call that lets me turn them back on.
I created an array to store sixteen channels and four values associated with each one. While integrating it into my code, I saw a way to sustain my notes when I was not playing a new one based on the probability knob. I changed this method in mode1(), drastically improving the sound. I kept the code the same in mode0 to compare them, and the short stops in the first method are undesirable. Instruments like strings can continue infinitely or play staccato, depending on the odds.
I finished mode2(), and it successfully plays multiple instruments, one per channel, and will sustain long intervals on tracks with a low probability, and it can accompany itself with faster instruments. I enjoyed a three-instrument arrangement where I programmed a "Rock Organ" to play two octaves below mainNote, a "Synth Choir" to play at the same pitch, and a "Muted Trumpet" two play one octave above mainNote. It was rudimentary, but the overall effect impressed me.
The rest of the posts for this project have been arranged by date.
First time here?
Completed projects from year 1
Completed projects from year 2
Completed projects from year 3
Completed projects from year 4
Completed projects from year 5
Completed projects from year 6
Completed projects from year 7
Completed projects from year 8
Disclaimer for http://24hourengineer.blogspot.com and 24HourEngineer.com
This disclaimer must be intact and whole. This disclaimer must be included if a project is distributed.
All information on this blog, or linked by this blog, is not to be taken as advice or solicitation. Anyone attempting to replicate, in whole or in part, is responsible for the outcome and procedure. Any loss of functionality, money, property, or similar, is the responsibility of those involved in the replication.
All digital communication regarding the email address 24hourengineer@gmail.com becomes the intellectual property of Brian McEvoy. Any information contained within these messages may be distributed or retained at the discretion of Brian McEvoy. Any email sent to this address, or any email account owned by Brian McEvoy, cannot be used to claim property or assets.
Comments to the blog may be utilized or erased at the discretion of the owner. No one posting may claim property or assets based on their post.
This blog, including pictures and text, is copyright to Brian McEvoy.
2022-03-04
mode2() will support multiple instruments playing simultaneously. I took a long time thinking about how to accomplish this because past iterations worked but were clunky. Each mode has improved upon the previous, so mode3() may not only use scraps from its predecessors, but I have ample memory in this controller. I have yet to reach 20% capacity and have already installed my libraries.
I moved the pitch controls to potentiometers and programmed them so that when they overlap, the lower pitch will take precedence. With pitch controlled this way, I can turn the upper pitch to zero and control the overall sound with a single potentiometer. I reprogrammed the encoders to become my channel selector and note offset. The channel will allow any number between 0 to 15, and the offset will be -24 to 24 notes or ± two octaves. I removed the potentiometer values from the screen because they interfered with the instrument name and caused jittering whenever they experienced EM interference. The colored knobs will be their feedback, but I added a serial call that lets me turn them back on.
I created an array to store sixteen channels and four values associated with each one. While integrating it into my code, I saw a way to sustain my notes when I was not playing a new one based on the probability knob. I changed this method in mode1(), drastically improving the sound. I kept the code the same in mode0 to compare them, and the short stops in the first method are undesirable. Instruments like strings can continue infinitely or play staccato, depending on the odds.
I finished mode2(), and it successfully plays multiple instruments, one per channel, and will sustain long intervals on tracks with a low probability, and it can accompany itself with faster instruments. I enjoyed a three-instrument arrangement where I programmed a "Rock Organ" to play two octaves below mainNote, a "Synth Choir" to play at the same pitch, and a "Muted Trumpet" two play one octave above mainNote. It was rudimentary, but the overall effect impressed me.
The rest of the posts for this project have been arranged by date.
First time here?
Completed projects from year 1
Completed projects from year 2
Completed projects from year 3
Completed projects from year 4
Completed projects from year 5
Completed projects from year 6
Completed projects from year 7
Completed projects from year 8
Disclaimer for http://24hourengineer.blogspot.com and 24HourEngineer.com
This disclaimer must be intact and whole. This disclaimer must be included if a project is distributed.
All information on this blog, or linked by this blog, is not to be taken as advice or solicitation. Anyone attempting to replicate, in whole or in part, is responsible for the outcome and procedure. Any loss of functionality, money, property, or similar, is the responsibility of those involved in the replication.
All digital communication regarding the email address 24hourengineer@gmail.com becomes the intellectual property of Brian McEvoy. Any information contained within these messages may be distributed or retained at the discretion of Brian McEvoy. Any email sent to this address, or any email account owned by Brian McEvoy, cannot be used to claim property or assets.
Comments to the blog may be utilized or erased at the discretion of the owner. No one posting may claim property or assets based on their post.
This blog, including pictures and text, is copyright to Brian McEvoy.
2022-03-04
Comments
Post a Comment