The four LED columns on the left and four on the right don't need to be there, but I used them to indicate the selected track. In the picture, I picked the fourth track from the top. To show where on the beat the machine is, I made a vertical scrolling bar. For now, the bar travels at a steady rate, but it will move based on tempo when I get the timer panel fixed.
I dug into the timer panel, and I mean deep. I tried to isolate the code making it miss a signal release, but I couldn't find anything. I went as far as to start a bare sketch where it printed the time between transmissions, and without fail, it would miss deadlines. I modified the functions to work at the next feasible instance, but they are not entirely reliable.
I used averaging to calculate the tempo coming off the timer panel. I got it to display a reliable fifty beats per minute, but it would fall apart at higher speeds. I still saw a timing issue, and there was something off proportionally, and I didn't think multiplying by a correction factor would be good practice. I decided to offload all the timing to the timer panel. Instead of calculating the tempo and pace of the drum machine accordingly, I will advance the program based on incoming clock signals.
I moved onto the OLED screen, where I programmed it to display the current instrument selection. Above it and below, I show the next and previous instrument names to scroll quickly. The list comes from the general MIDI assignment and won't apply to custom percussion arrangements.
I added MIDI note output so I could make some noise. I already had some code to assign lights, but it didn't set an instrument, so I fixed a few bugs. I made a video of the prandomize function, but I played it through cheap speakers instead of mixing it in correctly.
I am almost done with the drum machine, so I spent a day tying up loose ends. I now show the track and melody on the screen, and prandomized arrangements exclude a few instruments I didn't enjoy, such as the whistle that sounds like it belongs to a sports referee.
The rest of the summary posts 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.
I dug into the timer panel, and I mean deep. I tried to isolate the code making it miss a signal release, but I couldn't find anything. I went as far as to start a bare sketch where it printed the time between transmissions, and without fail, it would miss deadlines. I modified the functions to work at the next feasible instance, but they are not entirely reliable.
I used averaging to calculate the tempo coming off the timer panel. I got it to display a reliable fifty beats per minute, but it would fall apart at higher speeds. I still saw a timing issue, and there was something off proportionally, and I didn't think multiplying by a correction factor would be good practice. I decided to offload all the timing to the timer panel. Instead of calculating the tempo and pace of the drum machine accordingly, I will advance the program based on incoming clock signals.
I moved onto the OLED screen, where I programmed it to display the current instrument selection. Above it and below, I show the next and previous instrument names to scroll quickly. The list comes from the general MIDI assignment and won't apply to custom percussion arrangements.
I added MIDI note output so I could make some noise. I already had some code to assign lights, but it didn't set an instrument, so I fixed a few bugs. I made a video of the prandomize function, but I played it through cheap speakers instead of mixing it in correctly.
Testing the drum machine's prandom function
I am almost done with the drum machine, so I spent a day tying up loose ends. I now show the track and melody on the screen, and prandomized arrangements exclude a few instruments I didn't enjoy, such as the whistle that sounds like it belongs to a sports referee.
The rest of the summary posts 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.
Comments
Post a Comment