Generowanie pojedyńczego dźwięku

Pytania, kody i porady dotyczące nie tylko Bascom.
Awatar użytkownika
niveasoft
Posty: 1213
Rejestracja: 17 sie 2015, 12:13
Kontakt:

Re: Generowanie pojedyńczego dźwięku

Post autor: niveasoft » 09 gru 2018, 13:20

Dajcie się też pobawić :P
Przy kawie napisałem coś takiego i nagrałem filmik. Zanim napisałem post już miałem kilka nowych pomysłów łącznie z polifonią ahahahaha :D
Teraz wciśnięcie innego przycisku dopóki jeden gra skutkuje tym że dalej gra ten sam dźwięk a można by zapamiętywać poprzedni stan, porównywać i ewentualnie dźwięk zmienić ;)
Pobawiłem się i wracam do swoich zadań ahahahaha :D Przypomniały mi się te pierwsze organki elektroniczne :D

  1. $regfile = "m16def.dat"
  2. $crystal = 8000000
  3. $hwstack = 40
  4. $swstack = 16
  5. $framesize = 64
  6.  
  7.  
  8. Config Portd = Input : Portd = 255
  9.  
  10. Dim Stan_sw As Byte
  11.  
  12. Config Timer1 = Timer , Prescale = 1 , Compare_a = Disconnect , Compare_b = Disconnect , Clear_timer = 1
  13.  
  14.  
  15. Do
  16.  
  17.  Stan_sw = Pind                                             'sprawdź czy wciśnięto jakiś przycisk
  18.  
  19.   If Stan_sw <> 255 Then
  20.  
  21.     Select Case Stan_sw
  22.      Case &B11111110
  23.       Compare1a = 3819                                      '1047Hz @8MHz
  24.      Case &B11111101
  25.       Compare1a = 2999                                      '1000Hz @8MHz
  26.      Case &B11111011
  27.       Compare1a = 7999                                      '500Hz @8MHz
  28.      Case &B11110111
  29.       Compare1a = 6665                                      '600Hz @8MHz
  30.    End Select
  31.  
  32.    Config Timer1 = Timer , Prescale = 1 , Compare_a = Toggle , Compare_b = Disconnect , Clear_timer = 1       'włącz wyjście Timera
  33.     Gosub Trzymaj_dzwiek                                    'skocz do podprogramu
  34.  
  35.   End If
  36.  
  37.  Loop
  38.  
  39.  Trzymaj_dzwiek:
  40.  'dzwięk odtwarzany jest przez Timer sprzętowo bez uzycia przerwań
  41.  'odtwarzany jest tak długo jak wciśnięty jest jakiś przycisk ;)
  42.   Do
  43.    Stan_sw = Pind
  44.   Loop Until Stan_sw = 255
  45.  
  46.  'tutaj już po zwolnieniu przycisku, odłącz wyjście Timera1 od pinu OC1A
  47.  Config Timer1 = Timer , Prescale = 1 , Compare_a = Disconnect , Compare_b = Disconnect , Clear_timer = 1
  48.  Return
  49.  
  50.  
  51.  
[media]https://drive.google.com/file/d/1bavbvv ... PMJyZ/view[/media]
sp3ots
Posty: 42
Rejestracja: 08 wrz 2018, 10:26

Re: Generowanie pojedyńczego dźwięku

Post autor: sp3ots » 09 gru 2018, 17:16

Witam !
Wczoraj poszedłem w stronę Bascoma ( po Twojej podpowiedzi, dziękuję ) znalazłem w sieci przykład z pozytywką.
Oto fragment dotyczący parametrów jednej gamy:

'*******************************************************************************
'* Description : DIGITAL MELODY PLAYER *
'* Revision : 1.0 *
'* Controller : ATMEGA8 *
'* Compiler : BASCOM-AVR 1.11.8.7 DEMO *
'* Author : Rubashka Vasiliy , Ukraine , 2007 *
'* Web : HTTP://WWW.LEDEFFECTS.NET
'===============================================================================
' Table of values Pulses,Periods for 3 octaves at frequency of quartz 8000000 Hz
'===============================================================================
'Note|Freqvency|Periods|Pulses 1/1|Pulses 1/2|Pulses 1/4|Pulses 1/8|Pulses 1/16|
'===============================================================================
' C1 | 261,63 | 2548 | 523 | 262 | 131 | 65 | 33 |
'Cis1| 277,18 | 2405 | 554 | 277 | 139 | 69 | 35 |
' D1 | 293,66 | 2270 | 587 | 294 | 147 | 73 | 37 |
'Dis1| 311,13 | 2143 | 622 | 311 | 156 | 78 | 39 |
' E1 | 329,63 | 2022 | 659 | 330 | 165 | 82 | 41 |
' F1 | 349,23 | 1909 | 698 | 349 | 175 | 87 | 44 |
'Fis1| 369,99 | 1802 | 740 | 370 | 185 | 92 | 46 |
' G1 | 392,00 | 1701 | 784 | 392 | 196 | 98 | 49 |
'Gis1| 415,30 | 1605 | 831 | 415 | 208 | 104 | 52 |
' A1 | 440,00 | 1515 | 880 | 440 | 220 | 110 | 55 |
'Ais1| 466,16 | 1430 | 932 | 466 | 233 | 117 | 58 |
' B1 | 493,88 | 1350 | 988 | 494 | 247 | 124 | 62 |
W programie są fragmenty utworów:
'Europe :: Final Countdown
'Corona :: Rythm of The Night
'Jean Michel Jarre :: Oxygene 10
'Titanic: Theme
Całość jest tam:
https://www.mcselec.com/index.php?optio ... 1&Itemid=5

Witaj Henryk !
Twoją twarz już chyba gdzieś widziałem !
To ja Stefan sp3ots.
Dziękuję za program.

Pozdrawiam Stefan

Niveasoft dziękuję za program.
ODPOWIEDZ