Add step sequencer feature (#9703)
* sequencer: create togglable feature * sequencer: add support for steps * sequencer: add support for tempo and resolutions * sequencer: schedule a message print at the right frequency * sequencer: send a hardcoded note * sequencer: add support for 8 tracks * sequencer: play several notes simultaneously * sequencer: only play the active tracks for a given step * sequencer: change the default behavior of the track toggler * sequencer: make number of tracks and track notes customizable * sequencer: move the keycodes down Not adding them at the end of the list apparently risks breaking compatibility with VIA. Source: https://github.com/qmk/qmk_firmware/pull/9703#discussion_r459202733 * sequencer: add unit tests * sequencer: add unit test for matrix_scan_sequencer * sequencer: expose internal state for better unit-testability * sequencer: add unit tests for matrix_scan_sequencer
This commit is contained in:
		
							parent
							
								
									4cdd3005d6
								
							
						
					
					
						commit
						38527f9a3b
					
				
					 18 changed files with 1280 additions and 0 deletions
				
			
		
							
								
								
									
										26
									
								
								quantum/sequencer/tests/midi_mock.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								quantum/sequencer/tests/midi_mock.h
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,26 @@ | |||
| /* Copyright 2020 Rodolphe Belouin
 | ||||
|  * | ||||
|  * This program is free software: you can redistribute it and/or modify | ||||
|  * it under the terms of the GNU General Public License as published by | ||||
|  * the Free Software Foundation, either version 2 of the License, or | ||||
|  * (at your option) any later version. | ||||
|  * | ||||
|  * This program is distributed in the hope that it will be useful, | ||||
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | ||||
|  * GNU General Public License for more details. | ||||
|  * | ||||
|  * You should have received a copy of the GNU General Public License | ||||
|  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | ||||
|  */ | ||||
| 
 | ||||
| #pragma once | ||||
| 
 | ||||
| #include <stdint.h> | ||||
| 
 | ||||
| extern uint16_t last_noteon; | ||||
| extern uint16_t last_noteoff; | ||||
| 
 | ||||
| uint16_t midi_compute_note(uint16_t keycode); | ||||
| void     process_midi_basic_noteon(uint16_t note); | ||||
| void     process_midi_basic_noteoff(uint16_t note); | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Rodolphe Belouin
						Rodolphe Belouin