Thông báo

Collapse
No announcement yet.

Có thể là một đè tài mới tinh....

Collapse
X
 
  • Lọc
  • Giờ
  • Show
Clear All
new posts

  • Có thể là một đè tài mới tinh....

    chào các cao thủ PIC, mong các bác giúp đở.
    http://tomscarff.tripod.com/8way_drm2/8way_drm2_1.htm



    đây là mạch MIDI của trống. tình cờ tìm được trên mạng.
    mình là người mới với PIC, cũng chỉ biết được chút ít. nhưng cũng là một fan của trống, vì thích trống (ký thuật pha chút nghệ sĩ....) nên mong các bác giúp đở về vụ này để khỏi mua trống (bộ trống dắt quá,mà nhà nhỏ hẹp nên sợ ồn ào). vụ này có khả thi ko các bác.
    Attached Files
    Last edited by tombassdrums; 27-05-2006, 16:14. Lý do: Trống điện tư dùng pic
    **Mẹ ơi!..!!!!!!! Phụ hồ khổ quá........

  • #2
    và đây là file HEX:
    Attached Files
    **Mẹ ơi!..!!!!!!! Phụ hồ khổ quá........

    Comment


    • #3
      đây là cái thứ hai,


      kèm theo code


      Code:
               LIST p=16C84
      
      ;Program to tx MIDI data with 10Mhz clock
      ;MIDI Drum-Pads
      
      ;PROGRAM: T. Scarff
      ;DATE: 03/12/97
      ;FILENAME: drm_lee1.asm
      ;ITERATION: 1.1
      ;NOTE: Channel 10 for drums is 09h
      
      ;********************************
      ;  Variable Assignment Addresses
      ;********************************
      
      dlyreg    equ       0C
      xcount    equ       0D
      xmtreg    equ       0E
      delay1    equ       0F
      count     equ       10h
      timer     equ       11h
      clkdown   equ       12h
      drum	  equ	    13h
      value1	  equ	    14h
      
      ;********************************
      ; 	Constant Assignments
      ;********************************
      CARRY     equ       00
      MSB       equ       07
      BORROW    equ       00
      LED       equ       07
      W	  equ	    00
      F	  equ	    01
      Z	  equ 	    02
      C	  equ	    00
      dx        equ       00
      
      ;********************************
      ; 	Port Assignments
      ;********************************
      PCL	  equ	    02
      STATUS	  equ	    03
      PORTA	  equ	    05
      PORTB	  equ	    06
      
      ;*********************************
      ;	Drum Assignments
      ;*********************************
      
      drum0	  equ	    00h ;dummy, never used
      drum1	  equ	    .36 ;bass
      drum2	  equ	    .38 ;snare
      drum3	  equ	    .43 ;low tom
      drum4	  equ	    .42 ;closed hh
      drum5	  equ	    .45 ;high tom
      drum6	  equ	    .46 ;open hh
      drum7	  equ	    .49 ;crash
      drum8	  equ	    .51 ;ride
      
      ;************************************
      ;	PROGRAMME Reset Point
      ;************************************
      
                org       0
                goto      INIT
      
      ;*************************************
      ;	Subroutines
      ;*************************************
      
      delay2    movwf dlyreg        ;delay=1+(n-1)*3+3 cycles
      dly2      decfsz dlyreg       ;where n is in W reg.
                goto dly2           ;n=18 for delay=55 cycles
                nop
                return
      
      bit_set   nop
                nop
                bsf PORTA,dx
                return
      
      bit_clr   bcf PORTA,dx
                nop
                nop
                return
      
      txmidi    movlw .8
                movwf xcount
                bcf PORTA,dx
                movlw .02
                movwf delay1
      dly1      decfsz delay1
                goto dly1
      
      xnext     movlw .20           ;This loop has 25 cycles
                call delay2         ;Plus delay2 value.
                rrf xmtreg          ;number of cycles to
                btfsc STATUS,CARRY  ;bit set/clear =1+55+9=65.
                call bit_set        ;number of cycles from
                btfss STATUS,CARRY  ;bit set/clear =15.
                call bit_clr        ;Total=80*0.4us=32uS
                decfsz    xcount
                goto xnext
      
      
                movlw .22           ;This loop requires 65 cycles
                call delay2         ;61 +4 so if n=20
                nop
                bsf PORTA,dx        ;delay=4+(n-1)*3=61
      
                movlw .25           ;This loop requires 80 cycles
                call delay2         ;75+5 so if n=25
                return              ;delay=4+(n-1)*3=76
      
      ;************************************
      ;	Initialise Software
      ;************************************
      
      
      INIT      clrf      PORTB
                movlw     0FFh
                TRIS      PORTB     ;MAKE PORTB all I/P'S
      				
                clrf PORTA
                movlw 00h
                TRIS PORTA ;make porta all outputs
      
                
      
      ;**************************************
      ;	Main Programme Start
      ;**************************************
      
      	clrf PORTB
      main	movf PORTB,W
      	movwf value1
      	xorlw 00h
      	btfsc STATUS,Z
      	goto main
      
      	movlw 00h
      	movwf count
      drum?	incf count,F
      	rrf value1
      	btfss STATUS,C
      	goto drum?
      
      	movf count,W
      	call convert
      
      	movwf drum	
              call noteon
             
      	call noteoff
      	goto main
      
      ;*****************************************************
      ;note-on subroutine
      ;*****************************************************
      
      noteon    movlw  099h ;note-on channel 10
                movwf xmtreg
                call txmidi
      
                movf  drum,W ; drum note
                movwf xmtreg
                call txmidi
      
                movlw  07fh ;max velocity
                movwf xmtreg
                call txmidi
      	  return
      
      ;*****************************************************
      ;note-off subroutine
      ;*****************************************************
      
      noteoff   movlw  089h ;note-off channel 10
                movwf xmtreg
                call txmidi
      
                movf  drum,W ; drum note
                movwf xmtreg
                call txmidi
      
                movlw  07fh ;max velocity
                movwf xmtreg
                call txmidi
      	  return
      
      
      
      ;*****************************************************
      ;	Table to convert drum sound
      ;*****************************************************
      convert   addwf PCL
      	  retlw drum0
                retlw drum1
                retlw drum2
                retlw drum3
                retlw drum4
                retlw drum5
                retlw drum6
                retlw drum7
                retlw drum8
               
            
         
             end
      Attached Files
      **Mẹ ơi!..!!!!!!! Phụ hồ khổ quá........

      Comment


      • #4
        Lấy cổng MIDI ở trong sound card rồi dùng soft phát ra có phải nhẹ nhàng hơn kô?
        Hay bạn muốn làm một thiết bị mix âm thanh có vài con IC chuyên dụng để làm chuyện này.
        Vẫn biết mỗi lần xa là một lần về lại...

        Comment


        • #5
          nếu làm với máy tính thì ko có gì khó, nhưng ko lẽ lúc thục hành tróng ban láy dùi dánh vào bàn phím sao?
          ngõ vào (input) của PIC trong đề tài này lấy tín hiệu từ piezo , nên có thể cảm nhận dc tốc độ đánh xuống của dùi trống,
          mình dịnh làm thành bộ jaz để tập và cũng là dể thục hành PIC.
          kính mong các bác giúp đở về khâu học tập PIC từ đề tài này (vừa hoàn thiện để tập vừa được học)......
          **Mẹ ơi!..!!!!!!! Phụ hồ khổ quá........

          Comment


          • #6
            đụng hàng rồi,tớ cũng là 1 fan của trống đây,nhưng thường chơi bằng organ cho đỡ tốn kém

            nhưng nếu bạn ráp thử cái đó mà chạy thì ngon rồi,còn nếu muốn nghiên cứu gì thì cứ nêu ra thử xem,có thể tớ sẽ giúp được gì đó ??!!?

            Comment


            • #7
              hên thật nhỉ, hỏi ngoài luồn một tí, bác biết đánh trống ko (mình đang luyện với trống jaz của thằng bạn nên bất tiện)....

              bác góp ý dùm vụ này khả thi ko? tìm dc nhiều:http://www.electronicdrums.com/pads/pads2.htm.


              có thể dùng code đó để cho PIC 16f628 dc ko,
              nếu muốn dùng cho 16f628 thì sửa gì ko và sửa như thế nào......



              Piezo là thứ giống như cai vừa là mic +loa+cảm biến âm....trong đồ chơi TQ mhieeuf lắm..
              **Mẹ ơi!..!!!!!!! Phụ hồ khổ quá........

              Comment


              • #8
                Cũng không thể lấy dùi trống gõ vào con pic đúng không

                Mạch này đầu thể thay thế bộ trống Chỉ dùng để thu âm thì phải ???

                Nếu bác muốn gõ vào muột cái gì đó sau đó cảm nhận lực đánh và phát thành tiếng trống thì dùng PC vẫn hay hơn. Pic chỉ làm nhiệm vụ trung gian thôi.
                Vẫn biết mỗi lần xa là một lần về lại...

                Comment


                • #9
                  theo tôi thì khác đấy bác ơi. con pic này có thể phát ra âm MIDI khi piezo cảm nhân độ rung của dùi.

                  như thế này nè:
                  http://www.technick.net/public/code/...p=cirmidi_drum


                  ko up hinh dc nên mong các bác chịu khó vào link nhé.
                  minh xin trợi giúp để hoan thiên nó như thế nào....
                  **Mẹ ơi!..!!!!!!! Phụ hồ khổ quá........

                  Comment


                  • #10
                    Ừ nhưng mà bác phải có thêm một cái amply có hỗ trợ MIDI nữa.
                    Vẫn biết mỗi lần xa là một lần về lại...

                    Comment


                    • #11
                      vấn đề này thì khả thi đó,vì nếu không thì trống điện tử ko thể ra đời!!!
                      đằng nào thì cũng phải gặp chút khó khăn,ko sao tránh được

                      ngõ vào bạn cần bộ cảm biến nhận biết được lực đánh trống(nếu làm chơi thì ko cần,gõ mạnh nhẹ gì cũng kêu như nhau)

                      tiếp theo chuyển nó thành mã nhị phân rồi đưa vào uC điều khiển,ta phải lưu đoạn âm thanh mẫu vào rom,ram gì đó(tất nhiên dưới dạng digital)

                      sau đó chuyển sang analog,đưa vào amply khuếch đại như bình thường

                      nếu bạn có nội công thâm hậu về uC thì cứ làm thử xem,dùng 8051 cũng thực hiện tốt được công việc này(có ai đánh được với tần số gõ là 1mhz không nhỉ?)

                      hi hi,đại loại là vậy đó,trên này chỉ thảo luận như vậy thôi chứ về đại thể thì bạn phải tự làm lấy vậy,cái này lúc trước tui cũng down về nhưng chưa có dịp làm thử

                      Comment


                      • #12
                        Theo mình hiểu thì mạch của bạn Tombassdrums chỉ phát ra các lệnh MIDI, cụ thể là các drum note. Bạn phải nối cáp đến ngõ MIDI của soundcard PC để nghe được tiếng trống từ loa PC. Bài toán rất hay và hoàn toàn khả thi!
                        Imagine all the people
                        Living life in peace...

                        Comment


                        • #13
                          Đúng là mach này chỉ phát lệnh MIDI, phải kết nối với ngõ MIDI cua soudcard để nghe âm trống qua loa.
                          **Mẹ ơi!..!!!!!!! Phụ hồ khổ quá........

                          Comment


                          • #14
                            lưu âm MIDI vao PIC đc hả các bác.
                            **Mẹ ơi!..!!!!!!! Phụ hồ khổ quá........

                            Comment


                            • #15
                              lam gi co chuyen do ha troi! Nhun cung co the la duoc.

                              Comment

                              Về tác giả

                              Collapse

                              tombassdrums Tìm hiểu thêm về tombassdrums

                              Bài viết mới nhất

                              Collapse

                              Đang tải...
                              X