Merge remote-tracking branch 'origin/master'
# Conflicts: # quantum/audio/voices.c
This commit is contained in:
		
						commit
						a8086126fe
					
				
					 5 changed files with 85 additions and 39 deletions
				
			
		| 
						 | 
				
			
			@ -1,4 +1,5 @@
 | 
			
		|||
#include "voices.h"
 | 
			
		||||
#include "stdlib.h"
 | 
			
		||||
 | 
			
		||||
// these are imported from audio.c
 | 
			
		||||
extern uint16_t envelope_index;
 | 
			
		||||
| 
						 | 
				
			
			@ -27,26 +28,31 @@ float voice_envelope(float frequency) {
 | 
			
		|||
        case default_voice:
 | 
			
		||||
            note_timbre = TIMBRE_50;
 | 
			
		||||
            polyphony_rate = 0;
 | 
			
		||||
        break;
 | 
			
		||||
	        break;
 | 
			
		||||
 | 
			
		||||
        case butts_fader:
 | 
			
		||||
            polyphony_rate = 0;
 | 
			
		||||
            switch (compensated_index) {
 | 
			
		||||
                case 0 ... 9:
 | 
			
		||||
                    frequency = frequency / 4;
 | 
			
		||||
                    note_timbre = TIMBRE_12;
 | 
			
		||||
                break;
 | 
			
		||||
	                break;
 | 
			
		||||
 | 
			
		||||
                case 10 ... 19:
 | 
			
		||||
                    frequency = frequency / 2;
 | 
			
		||||
                    note_timbre = TIMBRE_12;
 | 
			
		||||
                break;
 | 
			
		||||
	                break;
 | 
			
		||||
 | 
			
		||||
                case 20 ... 200:
 | 
			
		||||
                    note_timbre = .125 - pow(((float)compensated_index - 20) / (200 - 20), 2)*.125;
 | 
			
		||||
                break;
 | 
			
		||||
	                break;
 | 
			
		||||
 | 
			
		||||
                default:
 | 
			
		||||
                    note_timbre = 0;
 | 
			
		||||
                break;
 | 
			
		||||
                	break;
 | 
			
		||||
            }
 | 
			
		||||
        break;
 | 
			
		||||
    	    break;
 | 
			
		||||
 | 
			
		||||
        case octave_crunch:
 | 
			
		||||
            polyphony_rate = 0;
 | 
			
		||||
            switch (compensated_index) {
 | 
			
		||||
| 
						 | 
				
			
			@ -56,17 +62,20 @@ float voice_envelope(float frequency) {
 | 
			
		|||
                    frequency = frequency / 2;
 | 
			
		||||
                    note_timbre = TIMBRE_12;
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
                case 10 ... 19:
 | 
			
		||||
                case 25 ... 29:
 | 
			
		||||
                case 33 ... 35:
 | 
			
		||||
                    frequency = frequency * 2;
 | 
			
		||||
                    note_timbre = TIMBRE_12;
 | 
			
		||||
                break;
 | 
			
		||||
	                break;
 | 
			
		||||
 | 
			
		||||
                default:
 | 
			
		||||
                    note_timbre = TIMBRE_12;
 | 
			
		||||
                break;
 | 
			
		||||
                	break;
 | 
			
		||||
            }
 | 
			
		||||
        break;
 | 
			
		||||
	        break;
 | 
			
		||||
 | 
			
		||||
        case duty_osc:
 | 
			
		||||
            // This slows the loop down a substantial amount, so higher notes may freeze
 | 
			
		||||
            polyphony_rate = 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -78,9 +87,10 @@ float voice_envelope(float frequency) {
 | 
			
		|||
                    // note_timbre = (sin((float)compensated_index/10000*OCS_SPEED) * OCS_AMP / 2) + .5;
 | 
			
		||||
                    // triangle wave is a bit faster
 | 
			
		||||
                    note_timbre = (float)abs((compensated_index*OCS_SPEED % 3000) - 1500) * ( OCS_AMP / 1500 ) + (1 - OCS_AMP) / 2;
 | 
			
		||||
                break;
 | 
			
		||||
                	break;
 | 
			
		||||
            }
 | 
			
		||||
        break;
 | 
			
		||||
	        break;
 | 
			
		||||
 | 
			
		||||
        case duty_octave_down:
 | 
			
		||||
            polyphony_rate = 0;
 | 
			
		||||
            note_timbre = (envelope_index % 2) * .125 + .375 * 2;
 | 
			
		||||
| 
						 | 
				
			
			@ -88,18 +98,21 @@ float voice_envelope(float frequency) {
 | 
			
		|||
                note_timbre = 0.5;
 | 
			
		||||
            if ((envelope_index % 8) == 0)
 | 
			
		||||
                note_timbre = 0;
 | 
			
		||||
        break;
 | 
			
		||||
            break;
 | 
			
		||||
        case duty_fifth_down:
 | 
			
		||||
            note_timbre = 0.5;
 | 
			
		||||
            if ((envelope_index % 5) == 0)
 | 
			
		||||
                note_timbre = 0.75;
 | 
			
		||||
        break;
 | 
			
		||||
            break;
 | 
			
		||||
        case duty_fourth_down:
 | 
			
		||||
            if ((envelope_index % 12) == 0)
 | 
			
		||||
                note_timbre = 0.25;
 | 
			
		||||
            else
 | 
			
		||||
                note_timbre = 0.5;
 | 
			
		||||
        break;
 | 
			
		||||
            break;
 | 
			
		||||
 | 
			
		||||
		default:
 | 
			
		||||
   			break;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return frequency;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue