자신의 손으로 저렴한 Arduino 기반 MIDI 컨트롤러를 만드는 방법. 자신의 손으로 Arduino 기반의 저렴한 MIDI 컨트롤러를 만드는 방법 전위차계 위치 읽기

나는 오랫동안 내 안의 작곡가를 깨우고 나만의 일렉트로닉 음악을 만들고 싶었습니다. 그러나 나는 (부드럽게 말하면) MIDI 컨트롤러의 높은 가격 때문에 낙담했습니다. 하지만 인터넷을 검색한 후 Arduino Uno와 전도성 페인트를 사용하여 나만의 컨트롤러를 만드는 아이디어를 얻었습니다!

시작하자)

1단계: 부품 선택

제시된 자료에서 약간 벗어날 수 있으며 조립한 MIDI 컨트롤러는 계속 작동합니다(“약간 벗어남”이란 약간 다른 값으로 저항기를 설치하거나 핀 중 하나를 연결 해제된 상태로 둘 수 있음을 의미합니다).

전자 제품에는 다음이 필요합니다.

  • USB 케이블이 포함된 Arduino Uno 1개;

  • 전도성 페인트 1병;

  • 5x7cm 크기의 장착판 1개;

  • 버튼 3개;

  • 저항이 2.2kOhm인 저항기;

  • LED 1개;

  • 저항이 10kOhm인 저항기;

  • LDR 센서 1개;

  • 저항이 4.7kOhm인 저항기;

  • 점퍼 1개;

  • 2.7MΩ 저항기 12개;

  • 직선 핀 30개;

  • 12개의 구부러진 핀;

  • 어댑터 12개;

  • 12 개의 종이 클립.

전자 제품 외에도 다음 도구도 필요합니다.

  • 납땜 인두 및 땜납;
  • 와이어 절단기;
  • 납땜 부품용 스탠드(세 번째 손)
  • 멀티미터;
  • 여러 개의 와이어 및/또는 얇은 금속 와이어.

2단계: 핀 납땜

핀을 납땜하여 보드 만들기를 시작해 보겠습니다. 포스팅하자 구부러진 핀보드의 첫 번째 줄 중앙에 있습니다. 이후에는 키보드가 연결될 "민감한" 핀 역할을 합니다.

핀을 설치한 후 짧은 핀이 보드에서 튀어나온 것을 확인합니다. 모든 것이 플러시되도록 누르십시오. 이제 납땜하고 즉시 연결에 단락이 있는지 확인합니다.

참고: 핀을 너무 오랫동안 납땜하지 마십시오. 그렇지 않으면 가열되어 플라스틱이 녹을 수 있습니다.

다음 단계에서는 직선형 빗을 슬롯에 넣습니다. 아두이노. 아두이노에 삽입된 핀 위에 보드를 설치해 보겠습니다. 핀이 보드의 구멍과 완벽하게 정렬되지 않았기 때문에 이 작업에는 약간의 힘이 필요했습니다.

보드를 핀에 성공적으로 설치한 후에는 핀이 보드의 상단 가장자리와 같은 높이인지 확인하십시오. 그 후에는 납땜이 가능합니다.

3단계: 점퍼 납땜

이제 Arduino에서 보드를 제거하고 반대쪽으로 뒤집어 보겠습니다. 나중에 구성 요소를 부착할 점퍼를 납땜해 보겠습니다. 이를 수행하는 방법에는 두 가지가 있습니다.

  • 필요한 모든 구멍을 납땜으로 채운 다음 서로 연결하십시오.
  • 얇은 철사를 사용하세요.

더 간단하고 빠르기 때문에 두 번째 방법을 사용하는 것이 좋습니다. 이 방법을 선택하는 경우 이미지에 표시된 대로 보드에 와이어를 배치합니다.

  • 빨간색 점은 와이어를 구멍에 납땜한다는 의미입니다.
  • 노란색 점 - 얇은 와이어를 보드 반대편의 핀에 연결합니다(세 번째 이미지 참조).

보시다시피 납땜을 너무 많이 해서 왼쪽 하단이 좀 엉망이 되었으니 조심하세요!

팁: 얇은 와이어가 없으면 사용 중인 저항기 리드의 스크랩을 사용하십시오.

4단계: 터치 정전 용량 저항기 납땜

우리는 구성 요소를 설치합니다. 2.7 MOhm저항기, 감각 용량 기능을 수행합니다.

참고: 터치 용량성 센서의 이론적 기초와 실제 적용에 대해 자세히 알아보려면 다음 링크를 확인하는 것이 좋습니다.

하나 놓자 2.7 MOhm저항기가장 오른쪽 구부러진 핀의 아래쪽에서 구멍을 통해 다리를 밀어 넣습니다(첫 번째 이미지 참조). 이제 보드를 뒤집어서 하나의 저항 리드를 다음 구멍으로 다시 밀어 넣습니다(두 번째 이미지 참조). 저항기의 아래쪽 다리를 구멍에 납땜하고, 저항기의 위쪽 다리를 핀 터미널에 납땜합니다. 그럼 첨부해보겠습니다 7 cm 와이어이 핀에 연결합니다(세 번째 이미지 참조).

모든 저항기와 전선을 사용하여 프로세스를 반복하고 제자리에 납땜해 보겠습니다. 저항기의 하단 다리는 하나의 긴 연결을 형성해야 합니다.

조언: 전선의 대체 색상을 선택하십시오. 이렇게 하면 이후 단계에서 연결이 더 쉬워집니다.

5단계: 버튼 납땜

첫 번째와 두 번째 이미지처럼 보드에 버튼과 저항을 배치하는 것부터 시작하겠습니다. 내 경우에는 2.2 kΩ 저항기, 그러나 2kOhm에서 10KOhm 사이의 값을 가진 모든 저항을 사용할 수 있습니다.

보드를 뒤집어서 모든 것을 제자리에 납땜해 봅시다. 이미지 3에서는 수행해야 하는 다양한 연결에 대해 설명합니다.

  • 파란색 점 - 보드에 납땜해야 하는 버튼 다리를 나타냅니다.
  • 분홍색 점 - 보드에 납땜해야 하는 저항기 다리를 나타냅니다.
  • 빨간색 선은 두 지점을 하나의 연결로 납땜해야 함을 의미합니다.
  • 검은색 선은 버튼의 한쪽 다리에서 보드의 구멍을 통과하여 다른 쪽 핀에 연결되는 와이어를 나타냅니다.

모든 것이 올바르게 납땜되면 가장 왼쪽에 있는 두 개의 버튼을 사용하여 옥타브를 변경할 수 있습니다., 가장 오른쪽 버튼을 누르면 활성화됩니다.LDR 센서.

6단계: LDR과 LED 납땜

버튼을 납땜한 후 LDR, LED 및 해당 저항을 계속 설치합니다. 이 작업을 수행하기 전에 LED에 연결될 저항 값을 실험해 보는 것이 좋습니다. 아마도 내 평가가 너무 높아서 LED를 켜지 않을 수도 있습니다. 올바른 저항 값을 찾기 위해 약간의 실험을 해보세요.

팁: 330 사이의 모든 저항옴과 5k옴5에 대한 좋은 해결책이 될 것입니다mm주도의.

이제 LED, LDR 및 저항을 배열하겠습니다( 4.7 K에 대한LDR) 올바른 장소에. 보드를 뒤집어서 모든 것을 납땜해 봅시다. 세 번째 이미지는 이루어져야 하는 다양한 연결을 설명합니다.

  • 갈색 점은 보드에 납땜해야 하는 LDR 핀입니다.
  • 분홍색 점은 보드에 납땜해야 하는 저항기 다리입니다.
  • 주황색 점은 보드에 납땜해야 하는 LED 핀입니다.
  • 빨간색 줄무늬 - 두 지점을 하나의 연결에 납땜해야 합니다.
  • 검은색 줄무늬는 저항 출력에서 ​​보드 구멍을 통과하여 핀에 연결되는 와이어입니다.

참고: LED를 납땜하기 전에 LED의 극성이 올바른지 확인하십시오. LED의 양극 단자는 저항기에 연결되고 음극 단자는 접지에 연결되어야 합니다.

7단계: 모든 연결 테스트

이제 버튼, LDR, LED의 연결이 성공적으로 납땜되었는지 테스트해 볼 차례입니다. 이번이 오류를 수정할 수 있는 마지막 기회이므로 첨부된 코드를 다운로드하여 프로그램을 실행해 보시기 바랍니다. 그리고 다운로드 Arduino_Test_Fixture_Code Arduino 보드에.

모든 것이 성공적으로 완료되고 테스트가 완료되면 다음 단계로 넘어갈 수 있습니다. 그렇지 않은 경우 보드의 납땜 연결을 다시 확인하십시오. 멀티미터를 가까이에 두는 것이 더 낫습니다. 나는 내 자신의 쓰라린 경험을 통해 이렇게 말합니다.

8단계: 보드 마무리

첫 번째 이미지에서 볼 수 있듯이 구멍에 와이어를 설치하는 것부터 시작하겠습니다. 이 단계에서는 서로 다른 색상의 와이어 두 개를 사용하는 것이 편리합니다.

보드를 뒤집어서 전선을 필요한 길이로 자릅니다. Arduino 커넥터에 들어가는 핀에 납땜하십시오. 사용을 시작하기 전에 MIDI 컨트롤러를 사용하려면 먼저 테스트 스케치를 사용하여 연결을 테스트해야 합니다. 스케치를 업로드하고 직렬 포트를 열고 보드의 "민감한" 핀을 터치합니다. 각 핀을 터치했을 때 'Note x is active'라는 텍스트가 표시되면 모든 핀이 올바르게 작동하는 것입니다.

9단계: Arduino를 MIDI 장치로 변환

보드가 준비되면 Arduino를 Ableton 및 Fl Studio와 같은 음악 프로그램 또는 기타 MIDI 장치에서 인식되는 MIDI 컨트롤러로 변환할 차례입니다. 이 프로세스는 두 단계로 구성됩니다.

  1. Arduino Uno의 현재 펌웨어를 MIDI 호환 프로그램으로 변경하십시오.
  2. Arduino에 MIDI 스케치를 업로드합니다.

첫 번째 지점부터 시작해 보겠습니다. 조건에 따라 Arduino에 로드됨 펌웨어USB 직렬 포트, 이를 통해 Arduino는 PC 및 Arduino IDE와 메시지를 교환할 수 있습니다. 새로운 프로그램으로 듀얼모코, 두 번째 모드가 추가되어 Arduino가 다음과 같이 작동할 수 있습니다. MIDI 장치.

FLIP 프로그램을 사용하여 지침에 따라 Arduino 펌웨어를 변경해 보겠습니다. 펌웨어 폴더의 아카이브에서 작업 파일(DualMoco.hex 파일)을 찾을 수 있습니다.

새 펌웨어를 다운로드한 후 Arduino를 PC에 다시 연결합니다. 모든 것이 순조롭게 진행된다면 새 프로그램이 ( 미디방법). MIDI를 녹음할 수 있는 음악 프로그램을 열고 Arduino 이름이 지정되어 있는지 확인하세요. 미디/ 모코~을 위한루파첫 번째 이미지에서 볼 수 있듯이 MIDI 설정 위에 표시되었습니다.

10단계: 최종 준비

특질 듀얼모코두 번째 모드가 있다는 것입니다. USB 직렬 포트, 일반 펌웨어와 마찬가지로 Arduino IDE에서 스케치를 업로드할 수 있습니다. Arduino를 두 번째 모드로 설정하려면 이미지 1과 2에 표시된 대로 두 개의 ISCP 핀을 함께 연결하십시오. 그림과 같이 와이어 조각이나 작은 점퍼 와이어를 사용할 수 있습니다. 이제 Arduino에서 USB 케이블을 몇 초 동안 뽑았다가 다시 연결하면 Arduino가 Arduino IDE에 표시됩니다.

참고: 모드에서 전환하려는 경우USB-직렬 포트VMIDI 모드에서 점퍼를 제거하세요.세 번째 이미지와 같이 ISCP 핀을 연결하고 다시 연결합니다.아두이노를 PC로.

이제 현재 스케치를 Arduino에 업로드할 차례입니다. 아두이노_결정적인_암호. 다운로드하고 Arduino를 다음으로 변환하세요. USB직렬 포트모드를 선택하고 코드를 다운로드하세요. 임계값을 미세 조정해야 하는 경우 값을 실험해 보세요. 한계점그리고 RES. 모든 것이 예상대로 작동하면 현재 라인 17을 다음과 같이 변경합니다.

부울 midiMode = false; // midiMode = false인 경우 Arduino는 USB-직렬 장치로 작동합니다.

부울 midiMode = true;// midiMode = true이면 Arduino는 기본 MIDI 장치로 작동합니다.

코드를 최종 변경한 후에는 MIDI 장치를 지원할 수 있는 음악 프로그램을 테스트할 차례입니다. 먼저 Arduino를 MIDI 모드로 전환해 보겠습니다.

  1. Arduino에 최종 코드를 업로드해 보겠습니다.
  2. Arduino에서 USB 케이블을 제거해 보겠습니다.
  3. ISCP 핀에서 점퍼를 제거하여 Arduino를 MIDI 모드로 전환합니다.
  4. Arduino에 USB 케이블을 설치해 보겠습니다.

모든 것이 순조롭게 진행되면 음악 프로그램을 열고 핀을 터치해 보세요. 마법의 소리가 들려야 합니다...

11단계: 점퍼에 종이 클립 납땜

Arduino 보드가 완전히 완성되면 이제 키보드와 이를 보드에 연결하는 방법에 집중할 차례입니다. 이를 수행하는 방법은 백만 가지가 있지만 저는 페인트 종이에 고정할 수 있는 클립을 선택했습니다(고정하기 쉽고 재사용할 수 있음).

종이 클립을 전선에 납땜하는 과정은 매우 간단합니다.

  1. 전선 한쪽의 플러그를 잘라냅니다.
  2. 절연 와이어를 5mm 벗겨냅니다.
  3. 벗겨진 와이어를 종이 클립에 납땜하십시오.
  4. 12개의 종이 클립 모두에 대해 반복합니다.

참고: 스테이플은 코팅(페인트 또는 플라스틱)으로 코팅되어서는 안 됩니다.

12단계: 템플릿 페인팅

종이 클립을 터치하는 것만으로도 Arduino MIDI 키보드를 연주할 수 있지만, 자신만의 스텐실을 만들어 사용하는 것이 훨씬 더 재미있습니다. 인쇄된 템플릿에 색상을 입혔습니다. 템플릿은 프로젝트 아카이브에 있습니다.

템플릿 색상을 지정하는 것은 매우 간단합니다. 선 사이에 공간을 두고 적절한 색상을 사용하는지 확인하세요. 그렇지 않으면 작동하지 않습니다. 페인트가 마른 후 종이 클립을 "건반"에 부착하면 음악 만들기를 시작할 수 있습니다.

관심을 가져주셔서 감사합니다!)

키보드는 MIDI 프로토콜을 사용하여 외부 사운드 모듈이나 컴퓨터(적절한 인터페이스가 있는 경우)에 연결하도록 설계되었습니다(음악을 시퀀서 프로그램에 녹음하거나 라이브 공연에 사용). 제안된 버전의 키 수는 48개이지만 회로를 변경하지 않고 64개까지 늘릴 수 있습니다. 제안된 키보드의 특징은 키에 가해지는 충격력에 대한 민감도입니다.

장치의 역사

얼마 전 아파트 구입과 관련하여 MIDI 키보드 역할을 했던 고급 악기를 잃어버릴 수밖에 없었습니다. 바로 전설적인 YAMAHA DX-7이었습니다. 슬픔이 가라 앉았을 때 그 심각성과 추악함에 대한 질문이 생겼습니다. 무엇을해야합니까? 바로 이 순간 내 친구의 노력으로 KR1816BE39(적대에서는 이 프로세서를 8048이라고 함)용 반조립 회로가 내 손에 들어갔습니다. 회로는 조립 및 설정이 쉬우며, 가장 중요한 것은 적시에 사용할 수 있다는 것입니다. KR1533ID7과 KR1533KP7을 사용하여 8x6 매트릭스 형태로 키보드를 조립했습니다. 연고에도 파리가있었습니다. 이 계획의 두 가지 단점은 키 입력 속도 (스피커)에 대한 민감도 부족과 PITCH WEEL 휠이라는 모든 장점을 죽입니다. 글쎄, 나는 한때 Z-80에서 프로그래밍을 하고(심지어 작동하는 시퀀서를 만들었고) 옛날 방식을 떨쳐버리기로 결정했습니다. 나는 Z-80을 도덕적으로 쓸모없는 CPU라고 단호하게 일축했습니다. 또한 납땜을 많이 하고 싶지 않았기 때문에 KR1816BE39에 동일한 장치를 기본으로 사용하여 키의 (상부) 접점을 차단하기 위한 또 다른 멀티플렉서를 장착하기로 결정했습니다. 나는 KR1816BE39 어셈블러에 대한 문서(믿을 수 없을 것입니다. 도서관에서 "단일 칩 마이크로프로세서에 대한 디지털 장치 설계"라는 책)를 찾아 프로그램을 적었습니다... 그리고 친구의 ROM 프로그래머가 죽었고 프로그램을 플래시할 것이 아무것도 없었습니다... 슬픔에 저는 완전히 정신을 잃었고 PIC에 대해 동일한 알고리즘을 다시 작성하기로 결정했습니다. 반나절 만에 프로그래머(LUDIPIPO)를 함께 납땜한 다음 소켓 KR1533ID7과 한 쌍의 KR1533KP7로 프로토타입을 만들었고 스탬프 없이 MGTF에서 전체 설치를 완료했습니다. 그리고 그 과정이 시작되었습니다..

먼저, 프로그램의 비동적 버전이 시작되었습니다(키당 하나의 접점이 있는 키보드를 사용하는 사용자에게도 제공합니다). 그런 다음 동적 버전이 시작되었습니다. 그런 다음 버튼과 표시기를 추가하는 아이디어가 나왔습니다. 사실 저는 WAVEBLASTER(아주 오래된 사운드 시스템을 위한 딸린 웨이브테이블 신디사이저)를 오랫동안 사용하지 않고 방치해 두었습니다. 그것을 내 창작물에 연결함으로써 컴퓨터 없이도 (당신의 능력과 재능을 최대한 활용하여) 플레이할 수 있는 것을 얻었는데, 이는 때때로 매우 편리합니다. 이는 버튼의 기능 세트를 결정합니다. 이는 "라이브" 재생 중에 사운드 모듈에 연결할 때 유용할 수 있습니다. 버튼의 기능은 자신만의 핸들러를 작성하고 폴링 및 표시 절차를 사용하여 쉽게 변경할 수 있습니다. 어쩐지 철제 케이스에 조립된 키보드가 YAMAHA PSS보다 더 편리한 것으로 나타났습니다(여전히 풀 사이즈 키, 페달, 그리고 가장 중요한 것은 다이내믹입니다!). 창작 과정 중에 순전히 컴퓨터 전용 MIDI 키보드 버전을 만들고자 하는 어려운 욕구가 생겼습니다. 표시기와 버튼은 선택 사항이지만 PITCH WEEL 및 MODULATION 휠이 필요합니다. 한동안 고생했지만 결국 포기하고 납땜 인두를 다시 켜봤습니다. 전자제품은 조립도 어렵지 않은데 기계적인 부분은 좀 더 어려워서 휠 디자인에 눈살이 찌푸려지기 시작했습니다. 몇 가지 생각 끝에 나는 두 번째 바퀴를 버리기로 결정했습니다. 어쨌든 두 바퀴를 동시에 돌리지 않고 보통 음표와 피치를 먼저 쓴 다음 모듈레이션을 추가합니다. 내가 그토록 좋아했던 기계 작업의 양을 절반으로 줄이는 것도 최소한의 고려 사항은 아니었습니다. 덜 게으른 분들을 위해 거의 복잡하지 않게 두 개의 바퀴를 만드는 방법을 아래에서 설명하겠습니다. 여전히 변조를 작성할 수 있도록 휠의 세 가지 작동 모드, 즉 2반음 피치, 1반음 피치(편리함), 변조를 구성하기로 결정했습니다. 이 모든 것을 하나의 버튼으로 전환할 수 있으며 한 쌍의 LED로 모드를 표시할 수 있습니다. 회로를 단순화하기 위해 나머지 버튼과 표시기를 제거했는데, 이 모든 것은 최신 시퀀서 프로그램에서 작동하는 데 필요하지 않습니다.

물론 휠은 전위차계 축에 배치되어야 합니다. 이는 이해할 수 있지만 무엇에 연결해야 합니까? 처음에는 555 타이머에서 원샷을 사용하려고 생각했지만 계산 결과 프로세서가 주로 스위칭을 측정하느라 허용 가능한 휠 샘플링 속도를 제공하려고 노력하면서 정확하고 안정적인 펄스 지속 시간 측정을 달성하기 어려울 것으로 나타났습니다. 키보드 접촉 시간. 남은 유일한 방법은 아날로그-디지털 변환기(ADC)를 사용하는 것입니다. ADC가 내장되지 않은 Pic16F84를 사용했기 때문에 엔지니어링 배경(및 기본 공장)을 기억하고 비교기(및 프로그램)를 사용하여 여러 저항기에서 ADC를 만들었습니다. 간단하고 저렴하며 매우 정확한 것으로 나타났습니다.

저는 버튼과 휠이 있는 다이어그램과 이를 위한 프로그램을 모두 제시합니다. 원하는 경우 외부 장치의 주소를 약간 변경하여 두 회로를 쉽게 결합할 수 있습니다. CHORUS(STEREO) 모드는 디튜닝을 얻기 위해 피치를 사용하므로 이를 제거하거나 디튜닝을 통해 피치 전송에 대해 걱정해야 한다는 점만 기억하면 됩니다. 채널 전반에 걸쳐

그래서 - 실제 키보드

장치 다이어그램

처음으로 나타난 것은 레이아웃의 기능을 테스트하기 위해 키에 가해지는 충격의 힘에 둔감한 비동적 버전이었습니다.

나는 여러 가지 이유로 PIC16F84를 프로세서로 사용했습니다. 이 칩은 사용 가능하고 저렴하며 프로그래밍하기 쉽고 제가 가지고 있던 칩이었습니다. 주의: PIC16C84는 적합하지 않습니다. RAM 셀이 36개뿐이므로 프로그램이 작동하지 않습니다. 그러나 휠 회로는 더 적은 수의 RAM 셀을 사용하며 해당 프로그램은 MIDCH(모든 전송된 데이터에 일정한 MIDI 채널을 할당함으로써)와 같이 몇 개의 셀을 더 줄여 PIC16C84에 압축할 수 있습니다.

표시가 있는 다이나믹 키보드의 다이어그램은 다음과 같습니다.

회로는 여러 측면에서 전통적입니다. 페달과 바퀴 없이 자전거를 재발명하는 것은 어렵습니다. J 포트 B는 전송을 위해 작동합니다. 하위 7비트는 외부 장치(표시기 및 휠 DAC)에 대한 매트릭스 또는 데이터의 키 주소를 출력합니다. 가장 중요한 비트는 MIDI 데이터를 직렬 코드로 출력하는 데 사용됩니다. 변환 및 출력은 소프트웨어에서 수행됩니다. 따라서 MIDI 바이트 출력 루틴을 다시 작성하려는 경우가 아니면 크리스탈은 4MHz여야 합니다. 포트 A의 최하위 2개 비트는 수신을 위해 작동합니다. 이 비트는 "해제된" 및 "눌린" 키 접점의 멀티플렉서로부터 신호를 수신하고, 가장 중요한 3개의 비트는 (다른 KR1533ID7 디코더를 통해) 외부 장치의 주소를 결정합니다. 휠이 있는 회로에서는 회로를 단순화하고 비교기의 데이터 입력을 위해 PA4 포트의 상위 비트를 확보하기 위해 외부 장치 주소 디코더를 버렸으므로 키보드와 버튼의 주소가 다릅니다. 회로를 결합할 때 주소를 해독하려면 포트 비트 PA2 및 PA3과 주소 4 장치(키보드, 버튼, 동적 표시 데이터 레지스터 및 동적 표시 친숙성 레지스터)를 사용하여 이 마이크로 회로를 반환해야 합니다. 휠 모드 표시를 다시 작성해야 합니다.

PITCH WEEL / MODULATION 휠이 있는 회로는 다음과 같습니다.

디커플링을 위해 각 키에 하나의 다이오드가 설치됩니다. 멀티플렉서 입력의 저항은 8k를 초과하면 안 됩니다. 그렇지 않으면 장착 정전 용량으로 인해 결함이 발생할 수 있습니다. 표시기 - 3자리 공통 양극이 있는 모든 것, 각 자리의 세그먼트 터미널이 별도로 출력되는 경우 동일한 이름의 세그먼트 터미널을 결합해야 합니다. 표시는 동적이며 숫자는 순차적으로 켜집니다. 잠금 기능이 없는 모든 버튼, 접촉 바운스는 소프트웨어로 제어됩니다. 같은 이름의 버튼 근처에 LED가 설치되어 해당 모드의 활성화를 나타냅니다. "+" 및 "-" 버튼에는 LED가 없습니다. 표시기의 트랜지스터는 저전력, 고주파 역전도입니다. 두 개의 KR1533IR23 레지스터는 현재 표시 숫자의 주소와 코드를 교대로 래치하는 데 사용됩니다(LED도 두 개의 준 숫자로 그룹화됨). 저는 48개의 키가 있는 소련 전기 오르간의 표준 키보드를 사용했습니다(이 키보드는 "START" 라디오 디자이너로도 별도로 제작되었으며 상당히 널리 사용됩니다). 건반의 높이와 악기의 두께를 줄이기 위해 각 건반 아래에 있는 6개의 접점 그룹 중 2개를 남겨두고 전체를 잘라내고 다시 접착했습니다. 일반적으로 키당 하나의 스위칭 그룹이면 충분하지만 이렇게 붙이는 것이 더 편리했습니다. "해제된" 접점과 "눌린" 접점의 버스바 길이는 8개입니다. 원하는 경우 전환 접점 그룹 대신 두 쌍의 닫는 접점이 사용되는 키보드를 사용할 수도 있습니다. 한 쌍은 키 이동이 시작될 때 닫히고 다른 쌍은 끝에서 닫힙니다(YAMAHA 악기에서와 같이). 이 경우 PA0에 대한 신호는 멀티플렉서(핀 6)의 역 출력에서 ​​공급되어야 합니다. 회로를 변경하지 않고 64개 건반(표준 – 61개, 즉 5옥타브)이 있는 키보드를 사용할 수 있습니다. 필요한 경우 키 수를 127개 이상으로 늘릴 수 있습니다. 이렇게 하려면 회로에 또 다른 KR1533ID7 디코더를 도입해야 합니다.

메커니즘을 잘 설정하는 것이 매우 중요합니다. 키를 놓을 때 상단 접점을 닫아야 합니다. 그렇지 않은 경우 프로그램은 해당 키를 누른 것으로 간주하고 처리를 시도하므로 해당 키를 다시 눌러도 소리가 나지 않습니다. 또한, 동시에 연주할 수 있는 최대 음표 수는 10개(손에 손가락이 더 많은 경우 이 숫자를 쉽게 변경할 수 있음)이며, 건반을 놓지 않으면 이 숫자가 줄어듭니다. 같은 이유로 키보드 폴링 절차에 지정된 키 개수는 실제 키 개수와 일치해야 합니다. 접촉 바운스는 소프트웨어에 의해 억제됩니다.

저항성 매트릭스 R-2R ADC의 경우 정확도 1~2%의 저항기를 선택하는 것이 좋으며 절대값은 다를 수 있으므로 비율이 중요합니다. 그러나 공칭 값을 크게 늘리면 비교기의 입력 커패시턴스로 인해 변환 시간이 늘어나므로 안 됩니다. 측정 결과에 따르면 하나의 장착 스트립에서 저항기는 일반적으로 1% 이상의 정확도로 일치하는 것으로 나타났습니다. 부정확한 저항을 사용하면 회로가 작동할 것이라고 확신하지만 특성의 선형성이 저하됩니다. 휠 자체는 오래된 TV의 손잡이로 만들어졌으며 전위차계 축에 스프링이 있어 휠을 중간 위치로 되돌립니다. 메커니즘 설정의 편의를 위해 모드 버튼을 누른 상태에서 전원을 켜면 휠이 중간 위치에 있을 때 LED가 켜지는 디버깅 프로그램이 활성화되어 영점 위치를 미세 조정할 수 있습니다. 전위차계 축의 휠. 별도의 MODULATION 휠을 만들 필요와 욕구가 있는 경우 무료 비교기 요소(4개가 있음)에 연결해야 하며 R-2R 매트릭스는 두 휠 모두에 공통입니다. 비교기의 출력을 전환하려면 추가 미세 회로를 사용하고 PA2를 제어 신호로 사용하는 것이 좋습니다.

원하는 경우 표시, 버튼 및 PITCH WEEL / MODULATION 휠 없이 동적 버전의 키보드를 조립할 수 있습니다. 회로의 사용되지 않는 부분을 조립하지 않고도 간단하게 조립할 수 있습니다. 전원을 켜면 변경 가능한 모든 매개변수가 기본값으로 설정됩니다.

이 모든 것은 무엇이든 전원을 공급받을 수 있으며 전류 소비는 특정 표시기에 따라 다르며 100mA를 초과하지 않습니다. 방열판 없이 보드 바로 위에 7805 안정 장치가 있습니다(사진에서 명확하게 볼 수 있음). 9v 이상이 공급되면 작은 라디에이터가 필요합니다. 비교기는 9-12V의 전압으로 전원이 공급되며 바람직하게는 안정화됩니다. 예, 저는 오래된 주식의 소련산 미세 회로를 사용했습니다. 현대 아날로그가 많고 교체가 가능하며 심지어 바람직합니다. 현대 아날로그는 소비량이 적습니다.

프로그램

누른 키를 처리하는 알고리즘은 1986년 잡지 "Microprocessor Tools and Systems" No. 5에 제안된 알고리즘에서 유래되었습니다. 제가 어셈블러를 공부하게 된 계기는 바로 이 출판물(또는 제안된 프로그램의 오류)이었습니다. 실제로 거기에서 가져온 유일한 아이디어는 RAM(CHAN)의 특별히 할당된 영역에 누른 키의 수를 기록하여 키보드가 다시 폴링될 때 이미 처리된 키를 다시 처리하지 않도록 하는 것이었습니다. 누른 각 키에 대해 두 개의 RAM 셀이 할당되어 있습니다 (총 10 개 이하). 첫 번째에는 누른 키의 수가 기록되고 두 번째에는 VELOCITY (누르는 속도)가 기록됩니다. 반복합니다. 이 셀은 20개만 있고 시작 주소는 CHAN이라는 이름으로 제공됩니다. 자유 쌍의 부호는 첫 번째 셀의 최상위 비트로 설정됩니다. 설정되는 두 번째 셀의 최상위 비트는 이 키에 대한 NOTE ON이 이미 전송되었으며 추가 처리가 필요하지 않음을 의미합니다.

전체 프로그램을 자세히 설명하지는 않겠습니다. 소스 코드에는 설명이 풍부하고 숙련된 사람이 쉽게 접근할 수 있습니다. 나머지 부분에 대해서는 즉시 Dinamic.hex 및 Pitchmod.hex 파일에 기성 펌웨어를 제공합니다. 명확하지 않은 몇 가지 사항만 설명하겠습니다. 우선, 역학에 대해 설명합니다. 키의 상단 접점이 열리는 순간 해당 번호는 CHAN 영역에서 첫 번째 자유 쌍의 첫 번째 셀에 기록되는 동시에 자유 쌍 기호를 재설정합니다. 두 번째 셀에는 초기 값 VELOCITY = 127이 기록됩니다.인터럽트 처리는 NOTE ON이 아직 전송되지 않은 모든 키의 VELOCITY 값을 감소시키기 때문에 키보드의 감도는 인터럽트 주파수에 의해 결정됩니다. 인터럽트는 내장된 타이머에 의해 발생합니다. 키의 아래쪽 접점이 닫히는 순간 해당 CHAN 셀에 "transferred" 기호가 설정되고 NOTE ON이 현재 VELOCITY와 함께 전송됩니다. 감도 곡선을 개선하기 위해 VELOCITY 값은 로그 법칙에 따라 감소합니다: 현재 VELOCITY 값에서 해당 부분의 1/16을 1만큼 뺍니다. 따라서 키는 위쪽 접점에서 아래쪽 접점으로 이동합니다. 첫째, 해당 CHAN 셀의 VELOCITY 값은 대수 법칙에 따라 감소하며 건반의 이동 속도가 빠를수록 건반의 아래쪽 접점이 닫히고 NOTE ON이 전송되는 순간 VELOCITY가 커집니다. 인터럽트는 동적 디스플레이도 제어합니다. 이는 표시기 깜박임을 제거하기 위해 수행됩니다.
버튼 기능: TRANSPOSE - 모든 키가 원하는 A 마이너로 축소됩니다. 범위 +/- 15 반음. PRG는 주어진 프리셋(UP1-UP5)에 음색(악기)을 할당하고 VOL은 볼륨을 할당합니다. 현재 매개변수는 표시기에 표시되며 "+" 및 "-" 버튼을 사용하여 변경할 수 있습니다. TWIN은 사전 설정(UP1-UP5) 중 하나와 동시에 LOWER 사전 설정인 "이중" 음색을 표시합니다. 동시에 소리가 납니다. STEREO는 약간의 "디튜닝"("코러스" 효과)을 적용하여 현재 프리셋의 사운드를 오른쪽 및 왼쪽 스테레오 채널로 출력합니다. SPLIT 버튼이 활성화되지 않았습니다. SUSTAIN 페달은 버튼 중 하나로 회로 방식으로 설계되었으므로 와이어의 정전 용량이 너무 커서는 안 됩니다. 버튼 핸들러의 주소는 프로그램 시작 부분의 테이블에 수집되며, 버튼의 기능을 변경할 때 자신의 것으로 대체할 수 있습니다.

휠의 ADC는 절반 소프트웨어이며 연속 근사 알고리즘을 사용하여 작동하며 R-2R 매트릭스는 디지털-아날로그 변환을 수행합니다. 먼저 R-2R 행렬에 최상위 자리의 1을 적용하고, 비교기는 그것이 많은지 적은지를 판단한다. 적으면 최상위 비트에 1이 남고 많으면 0이 됩니다. 그런 다음 각 하위 하위 비트(총 6단계)에서도 동일한 일이 발생하고 이에 해당하는 6비트 숫자를 얻습니다. 바퀴의 회전 각도. 이 정확도는 나에게 충분해 보이지만 행렬과 변환 프로그램을 늘려 비트를 하나 더 추가할 수 있습니다.

설계

실제 키보드로는 소련에서 만든 "Start" 생성자를 사용했습니다. 이제 작동하지 않는 오래되고 작동하지 않는 Yamaha나 Casio를 찾는 것이 더 쉬울 것입니다. 오래된 악기는 비교적 손상되지 않았습니다.

인쇄회로기판은 개발되지 않았습니다. 장치의 단일 복사본을 만들기 위해 배선과 기판을 만드는 데 시간을 보내는 것이 부적절하다고 생각하고 MGTF 점퍼를 사용하여 회로 기판에 레이아웃을 만들었습니다. 키보드에 대한 커넥터와 케이블로 양쪽에 해당 커넥터가 있는 컴퓨터의 플로피 드라이브 케이블을 사용했습니다. 이렇게 하면 완성된 장치를 더 쉽게 조립/분해할 수 있습니다.

내 경우에는 몸체가 얇은 강판 (손에 있던 것)으로 구부러져 있었고 측면은 나무로되어있었습니다 (예 : 옛 소련 도구).

간단히 말해서 그게 전부입니다. 창의적인 성공!

방사성 원소 목록

지정 유형 명칭 수량 메모가게내 메모장
계획 번호 1.
마이크로컨트롤러PIC16F841 메모장으로
KR1533ID71 메모장으로
KR1533KP71 메모장으로
선형 레귤레이터

LM7805

1 메모장으로
다이오드

KD522A

64 메모장으로
콘덴서22pF2 메모장으로
콘덴서0.1μF2 메모장으로
100μF2 메모장으로
저항기

220옴

2 메모장으로
저항기

6.8kΩ

8 메모장으로
석영 공진기4MHz1 메모장으로
키보드 버튼 64 메모장으로
계획 번호 2.
마이크로컨트롤러PIC16F841 메모장으로
KR1533ID72 메모장으로
KR1533KP72 메모장으로
KR1533IR232 메모장으로
선형 레귤레이터

LM7805

1 메모장으로
바이폴라 트랜지스터

KT315A

5 메모장으로
다이오드

KD522A

80 메모장으로
콘덴서22pF2 메모장으로
콘덴서0.1μF2 메모장으로
전해콘덴서100μF2 메모장으로
저항기

180옴

7 메모장으로
저항기

220옴

2 메모장으로
저항기

6.8kΩ

16 메모장으로
저항기

8k옴

1 메모장으로
석영 공진기4MHz1 메모장으로
공통 양극이 있는 3자리 LED 디지털 표시기. 1 메모장으로
발광 다이오드빨간색12 메모장으로
키 스위치 64 메모장으로
단추 16 메모장으로
계획 번호 3.
마이크로컨트롤러PIC16F841 메모장으로
KR1533ID71 메모장으로
KR1533KP72 메모장으로
비교기

오랫동안 프로듀서와 사운드 엔지니어에게 MIDI 컨트롤러는 아름다운 음악을 만드는 데 도움이 되는 중요한 속성이 되었습니다. 가상 악기는 항상 특별하게 들리므로 어떤 멜로디에도 장식이 됩니다.

많은 음악가들이 제품의 품질에 대해 매우 우려하고 있기 때문에 MIDI 유형 컨트롤러를 선택하는 방법에 대한 의문이 제기됩니다. 이 기사에서는 팁과 기본 선택 기준에 대해 설명합니다.

미디 컨트롤러란 무엇인가요?

1980년대에는 음악가가 하나의 키보드를 사용하여 여러 신디사이저의 작동을 동시에 제어할 수 있도록 컨트롤러라는 장치가 사용되었습니다. 이 아이디어는 성공하여 이러한 유형의 장치가 즉시 널리 보급되었습니다. 모든 사람이 구매할 수 없다면 현재 컨트롤러 가격이 크게 하락한 것입니다. 음악가, 사운드 엔지니어, 작곡가, 연주자, DJ 등 모두가 이러한 장치를 사용합니다.

키보드가 있는 장치는 무엇입니까? 피아노 및 신디사이저 키와 유사합니다. 손잡이, 다양한 버튼 및 슬라이더가 추가되었습니다. 이들과 상호작용할 때 멜로디는 외부 유형을 갖는 사운드 모듈로 전송됩니다. 우리는 노트북 및 기타 장치에 대해 이야기하고 있습니다. 즉, 컨트롤러(대부분)는 자체적으로 사운드를 생성할 수 없습니다. 외부 장치(사운드 모듈)에서 재생되는 비트, 음표 및 기타 매개변수를 조절하도록 설계되었습니다.

MIDI 컨트롤러의 장점은 무엇입니까? 가장 확실한 점은 다재다능하고 휴대가 간편하다는 것입니다. 덕분에 모든 가상 효과를 적용하고 최신 소프트웨어를 제어할 수 있습니다. 예를 들어 노트북 가방 등을 사용하여 쉽게 휴대할 수 있습니다.

구매할 때 무엇을 찾아야합니까?

컨트롤러를 구매하기 전에 컨트롤러의 용도에 대해 생각해 볼 필요가 있습니다. 다음 질문에 답하는 것이 유용할 것이며, 거대한 구색 중에서 어떤 옵션이 적합한지에 대한 정확한 아이디어를 제공할 것입니다.

컨트롤러는 어떤 용도로 사용되나요? 무대 공연용 장치에는 기계적 응력에 강한 재료가 있어야 합니다. 대부분의 컨트롤러가 플라스틱으로 만들어졌다는 점을 고려하면 금속 옵션에 주의할 필요가 있습니다. 또한 메커니즘 유형과 키 개수도 결정해야 합니다. 너무 많으면 라이브 공연 중에 그 목적을 혼동할 가능성이 있습니다.

작은 MIDI 컨트롤러는 DJ에게 딱 맞습니다. 전자공학을 이해하는 사람이라면 직접 손으로 만드는 것은 전혀 어렵지 않습니다. 이는 DJ들이 종종 집에서 만든 장비를 사용한다는 것을 의미합니다. 이에 대한 자세한 내용은 아래에서 읽을 수 있습니다. 핸들과 슬라이더도 필요하다는 점을 고려하여 이러한 장치를 구입해야 합니다. 이것이 없으면 프로그램(MIDI 컨트롤러는 이와 함께 작동함)이 원하는 기능을 수행하지 않습니다.

음악가가 침대, 비행기, 자동차 또는 기타 장소에서 트랙을 편집하는 경우 선택 시 주요 고려 사항은 휴대성입니다. 장치에 전원이 공급된다는 점을 고려하면 USB 버스에서 충전할 수 있는 장치에 주의해야 합니다.

Pioneer의 MIDI 컨트롤러

Pioneer MIDI 컨트롤러는 항상 수요가 많은 장치입니다. 이 제조업체는 오랫동안 해당 장비 시장에서 상위 3위 안에 들었습니다. "관련" Pioneer 모델을 서로 구별하는 점은 무엇입니까? 제어판에 일반 기계식 버튼처럼 보이는 추가 기능이 있습니다. 이 브랜드의 모든 컨트롤러에는 뛰어난 조그 휠이 있습니다. 외관은 심각하고 우아합니다. 장치의 인상적인 크기는 최대 기능으로 보상됩니다.

어떤 모델을 선택해야 할지 고민할 필요가 없습니다. 즉시 DDJ-T1을 자세히 살펴보세요. 많은 분들이 추천하는 기기이고, 가격 대비 품질이 상당히 좋습니다. 제어판이 편리하고, 버튼을 문제 없이 누를 수 있으며, 기기를 휴대하기 쉽습니다.

Novation 런치패드 컨트롤러

Novation Launchpad MIDI 컨트롤러는 Ableton Live와 함께 작동하도록 특별히 설계되었습니다. 이 장치는 무대 및 홈 스튜디오 활동 모두에 적합합니다. 디스코를 잡는 것도 쉬울 것입니다. 장치 그리드는 64개의 버튼으로 구성됩니다. 추가 효과는 물론 소프트웨어 작업 기능도 갖추고 있습니다. 이 장치는 컴퓨터에 연결할 수 있으며 Windows 제품군 및 기타 일부 운영 체제에서 작동합니다.

DIY MIDI 컨트롤러 - 현실인가 신화인가?

수제 MIDI 컨트롤러는 오랫동안 수요가 있었습니다. 아이디어를 실현하려면 무엇이 필요합니까? 장치를 납땜하고 조립할 다이어그램, 예산, 이 분야에 정통한 물리학자 또는 전기 기술자가 필요합니다.

기술적 측면을 아는 것 외에도 제작자가 컨트롤러에 대해 얼마나 알고 있는지 스스로에게 물어볼 필요가 있습니다. 모든 기대에 부응하는 장치를 올바르게 조립하려면 어떤 베이스를 사용하는 것이 가장 좋은지, 모델을 조립하는 이유, 제어판을 설치할 위치를 이해해야 합니다. 문제는 매우 복잡하지만 완전히 해결 가능합니다. 오늘날 컨트롤러를 조립하는 데 사용할 수 있는 기성 회로가 많이 있습니다. 가장 중요한 것은 계획과 인내심에 대한 자신감입니다.

아카이 브랜드 모델

Akai는 최근 MPC Touch라는 새로운 컨트롤러를 출시했습니다. 관련 기기와 달리 이 제품은 7인치 디스플레이를 탑재했다. 이렇게 하면 작업이 훨씬 쉬워집니다. 리뷰를 바탕으로 전문 컨트롤러의 경우 예로 사용되는 모델이 설명되어 있다고 말해야합니다. 그것을보고 기능을 고려하면 그러한 장치를 선택하는 방법에 대한 질문이 즉시 사라집니다. 소프트웨어는 매우 빠르고 효율적으로 작동하며 문제가 발생하지 않으며 오류가 극히 드뭅니다.

유일한 단점은 배터리가 없기 때문에 컨트롤러가 전원 없이 작동할 수 없다는 것입니다. Akai 브랜드는 오랫동안 시장에 알려져 왔습니다. MIDI 컨트롤러는 무거운 부하를 견딜 수 있는 강력하고 고품질의 장치입니다. 종종 일부 모델이 무대에서 사용됩니다.

MIDI 컨트롤러는 특정 물리적 프로세스를 MIDI 형식의 디지털 명령 집합으로 변환하는 장치입니다. 물리적 프로세스는 손가락으로 키를 누르는 것부터 볼륨 노브를 돌리는 것까지 다양합니다. 결과 명령 스트림은 MIDI 프로토콜을 통해 컴퓨터, 하드웨어 샘플러, 신디사이저 또는 외부 시퀀서와 같은 다른 장치로 전송되고 특정 방식으로 해독됩니다. 가장 일반적인 유형의 MIDI 컨트롤러는 MIDI 키보드(피아노 키보드와 전자식 키보드)입니다. 전자 드럼 키트를 포함하여 다른 유형의 컨트롤러도 많이 있습니다.

현대 시장에서는 가격, 품질, 기술적 특성 등과 같은 다양한 기준이 다른 전자 설치용 MIDI 컨트롤러가 엄청나게 많이 제공됩니다. 또한 상용 프로젝트(eDrum, megaDrum)로 구현되는 완성된 사용자 장치도 있습니다. 그러나이 모든 것에도 불구하고 자신의 손으로 그러한 장치를 만들고자하는 열망은 여전히 ​​​​현대 Kulibins의 마음 속에 살아 있습니다.

그러다가 몇 년 전 헤비 음악 그룹에 참여하면서 그런 장치를 만들어보고 싶다는 생각이 조금 뒤늦게 관심을 갖게 됐다. 우리는 하드 록, 아니면 Brutaldeath, Goregrind, Grindcore 같은 곡을 연주했습니다. 나는 일렉트릭 기타를 연주했다. 조금 더 일찍 우리는 Sonor 드럼 세트를 구입하고 저녁에 차고에서 소음을 냈습니다. 나중에 차고에서 우리에게 물었고 건물에 대한 질문이 생겼습니다. 가치 있는 것을 찾지 못한 우리는 집에서 리허설을 하기로 결정했고, 이는 즉시 이웃과의 갈등으로 이어졌습니다. 여기서 전자드럼에 대한 의문이 생겼습니다.

라이브 악기 연주와 병행하여 전자 음악을 작곡하고 VST 악기와 플러그인을 사용했는데, 특히 드럼 파트를 만들 때는 MIDI 인터페이스와 함께 작동할 수 있는 Addictive 드럼과 ezDrums를 선호했습니다. 이 주제를 검색하지도 않고 저는 8개의 ADC 채널이 탑재된 DIP 패키지의 저렴한 ATMega32 마이크로 컨트롤러에서 자체 MIDI 컨트롤러를 개발하는 데 몰두했습니다. 나는 회로에 울타리를 치고 싶지 않았고 입력을 8개로 제한하기로 결정했습니다. ATMega32에는 하드웨어 USB가 없기 때문에 가상 USB를 통해 컴퓨터에 대한 표준 연결을 사용했습니다. 며칠 동안 프로그래밍을 만지작거린 끝에 장치를 시작할 수 있었습니다. 인터넷에서 회로도와 펌웨어(MegaDrum)가 포함된 기성품 장치를 발견했을 때 얼마나 놀랐는지 상상해 보십시오. 그러나 완료되지 않은 모든 것은 모두 더 나은 것입니다.


전체 USB

직업 상으로는 프로그래머이지만 직업 상으로는 전자 프로그래머이자 기술 과학 후보자입니다. 전 상사가 말했듯이 저는 스위스 사람이고 사신이며 트럼펫 연주자입니다. 흔히 그렇듯이, 제가 AVR에 집착하게 된 이유는 AVR에 대한 감정이 있어서가 아니라 AVR의 기술적 특성과 성능에 완전히 만족했기 때문입니다. 그러나 더 이상 충분하지 않은 때가 왔습니다. 그런 다음 stm32가 이를 대체하기 위해 등장했으며 무엇보다도 완전한 USB 인터페이스를 탑재했습니다. 이것이 본격적인 MIDI 컨트롤러를 만들려는 아이디어가 나온 곳입니다. 또한 저는 이미 MIDI 인터페이스 작업 경험이 있습니다.

어디서부터 시작해야 할까요? DIP 패키지에는 stm32가 없었기 때문에(자연에 존재하더라도) 회로 기판에 납땜한다는 아이디어는 즉시 사라졌습니다. 바로 그때 DISCOVERY와 같은 stm32 마이크로컨트롤러를 기반으로 한 저렴한 개발 보드가 등장하기 시작했습니다. 이제 저는 ST-Link 프로그래머도 포함된 STM32F407DISCOVERY 디버그 보드의 행복한 소유자입니다. STM32F407 프로세서에는 16개의 ADC 채널이 있지만 4개의 ​​채널은 디버그 보드로 채워져 있는 주변 장치가 차지합니다. 하지만 내 목적에는 12개 채널이면 충분했습니다.


Keil 프로그래밍 환경, STM32F407 마이크로프로세서 아키텍처 및 USB 작업을 위한 표준 주변 장치 라이브러리를 연구한 후 직접 메모리 액세스 채널과 복합 USB를 사용하여 모든 ADC 채널을 폴링하는 프로그램을 만들었습니다. 장치 설정을 변경하기 위한 MIDI 오디오 장치 및 HID가 포함된 장치입니다.

드럼 센서로는 저렴한 가격에 매장에서 구입할 수 있는 ZP-1 피에조 벨을 사용했습니다.


MegaDrum에서 배선도를 가져왔습니다.


저는 16개 채널을 예약하여 Delphi에서 제어 프로그램을 작성했습니다. 원칙적으로 Megadrum에서처럼 회로에 아날로그 멀티플렉서를 추가하여 장치의 채널 수를 무한정 늘릴 수 있지만 우리는 고급 음악가가 아니기 때문에 우리 목적에는 16개 채널이면 충분합니다. 그리고 초보 드러머에게는 이 드럼 수는 매우 쉬울 것입니다.


이 장치는 Renoise 추적기를 사용하여 Windows와 Linux 모두에서 테스트되었습니다. 작업상 특별한 문제는 발견되지 않았습니다.
하지만 나는 이 결과에 그치지 않기로 했다. STM32F407은 상당히 정교한 프로세서이므로 상대적으로 가격이 비쌉니다. STM32F103을 사용하여 장치를 만드는 것이 더 저렴했습니다. 이베이가 구출하러 왔습니다. STM32F103RBT6이 탑재된 개발 보드를 구입했습니다.


사실, 내장된 프로그래머가 없습니다. 운이 좋았던 이유는 이전 직장에서 근무하던 ST-Link 프로그래머가 아직 남아 있었기 때문입니다.


407과 103 프로세서의 작동 원리는 근본적이지는 않지만 다르기 때문에 펌웨어를 완전히 다시 작성해야 했습니다.
그러다가 인터넷에서 실제로 1페니의 비용이 드는 디버깅 보드를 발견했고 이런 식으로 구성 요소 비용을 최소한으로 줄일 수 있다고 결정했습니다.

인터넷에 있는 대부분의 기사는 MIDI 키보드, 컨트롤러, 리모콘 등을 만드는 것에 관한 것입니다. MIDI 커넥터 사용을 기반으로 하기 때문에 최신 컴퓨터에 연결하는 데 문제가 있을 수 있습니다. 이전 사운드 카드에는 조이스틱이나 MIDI 장치를 연결할 수 있는 게임 포트가 있었습니다.

그러나 모든 새로운 마더보드에는 사운드 컨트롤러가 내장되어 있으며 사운드 카드에는 MIDI 장치를 연결하는 기능이 부족한 경우가 많습니다.
남은 것은 최신 MIDI 키보드, DJ 콘솔 등을 구입하는 것뿐입니다. 컴퓨터에 연결하기 위한 USB 출력이 있거나, 어댑터를 구매/납땜하거나, MIDI 장치를 연결할 수 있는 특수 사운드 카드를 구매할 수 있습니다. 물론 구매는 문제가 되지 않지만, 그것 때문에 우리가 이 사이트에 온 것은 아니겠죠?

이 기사에서는 저렴한 Arduino 컨트롤러를 사용하여 8개 키에 대한 USB 연결과 스크롤 휠이 있는 간단한 MIDI 키보드를 만드는 방법을 보여주고 싶습니다.

그래서 나는 다음을 사용했습니다.
아두이노 UNO 컨트롤러
8개 버튼
8개의 저항기 10kΩ
로터리 엔코더 25LB22-Q
브레드보드와 점퍼

연결 다이어그램은 다음과 같습니다.

연결하기 위해 가장 간단한 옵션인 키 1개 - 입력 1개를 사용했습니다. 그러나 더 많은 수의 키, 다른 컨트롤러 등이 있습니다. 입력이 충분하지 않을 수 있으므로 아날로그 입력(다른 값의 저항 추가) 또는 멀티플렉싱을 통해 데이터 읽기를 사용해야 합니다. 그러나 아날로그 입력에 여러 키를 연결하면 여러 키를 동시에 눌렀을 때 상태를 읽는 데 문제가 발생할 수 있습니다. 따라서 제 생각에는 멀티플렉싱이 더 수용 가능한 옵션입니다.

아두이노 소프트웨어

MIDI 데이터의 구조는 고려하지 않겠습니다. 왜냐하면... 이는 기사에 설명되어 있습니다.

인코더는 하드웨어 인터럽트 입력에 연결되어 있으므로 작업에 대한 설명은 고려하지 않겠습니다. 이 프로그램은 간단하며 공식 Arduino 웹사이트에서 가져왔습니다.

이 프로젝트에서는 인코더가 모듈레이션 휠을 변경하기 위한 스크롤 휠로 사용되지만 다른 목적(피치 벤드 등)으로 다시 할당할 수 있습니다.

Arduino의 인코더의 MIDI 데이터는 다음 라인으로 전송됩니다.
noteOn(0xB0, 0x01, 인코더0Pos);
여기서 0xB0은 컨트롤러 메시지(컨트롤 변경)입니다.
0x01 - 컨트롤러 코드(이 경우 변조)
인코더0Pos - 컨트롤러 값(이 경우 0-127).
컨트롤러 코드를 변경하면 다양한 컨트롤러에 스크롤 휠(인코더)을 사용할 수 있습니다.

피치 벤드(Pitch Bend)도 언급할 가치가 있습니다. MIDI 사양에 따르면 0xE0(피치 벤드 코드), MSB(높은 바이트), LSB(낮은 바이트)의 3바이트 메시지를 보내야 합니다.

두 개의 외부 바이트는 0~16383(0x3FFF) 범위의 14비트 피치 값을 저장합니다. 중간은 0x2000이며, 이 값보다 높은 모든 값은 피치를 위쪽으로 변경하고, 낮을 경우 피치가 아래쪽으로 변경됩니다.
프로그램 코드에서는 갑자기 변조 대신 피치 벤드를 사용하고 싶은 경우(중간 값, 2바이트로 분해 등) 라인을 주석 처리했습니다.

키 누르기 감지 코드에는 키를 눌렀을 때, 키를 누르고 있을 때, 키를 놓을 때 등 세 가지 상태가 포함됩니다. 이는 키를 누르는 기간의 값이 전송될 수 있도록 수행되었습니다. 이것이 필요하지 않은 경우 하나의 상태(키 누르기)만 남겨 둘 수 있으며 이 경우 프로그램은 상당히 단순화됩니다.
8개 키 각각의 상태를 처리하기 위해 다음 코드가 사용됩니다.

If (buttonState_C == HIGH && note_C_send_on == false) // 키를 눌렀을 때 ( noteOn(0x90, note_C, 0x7F); note_C_send_on = true; // 노트 온 명령이 전송됨 note_C_send_off = false; // 노트 오프 명령이 전송되지 않음 ) else if (buttonState_C == HIGH && note_C_send_on == true) // 키를 누른 경우 ( noteOn(0x00, note_C, 0x7F); note_C_send_on = true; note_C_send_off = false; ) else if (buttonState_C == LOW && note_C_send_off == false) // 키를 놓으면 ( noteOn(0x90, note_C, 0x00); note_C_send_on = false; note_C_send_off = true; 인코더0Pos = 0; // 휠 위치를 0으로 되돌림 ) ....... ..... .. ... .... // 시리얼 포트로 MIDI 메시지를 보내는 함수 void noteOn(int cmd, intitch, int Velocity) ( Serial.write(cmd); Serial.write(pitch); Serial. 쓰기(속도); 지연( 20); )

피치 벤드가 사용되는 경우 인코더0Pos는 0이 아닌 0x2000으로 반환되어야 합니다(또는 프로그램 시작 부분에 정의를 설정하는 것이 더 좋습니다).

따라서 회로가 조립되고 스케치가 컨트롤러에 업로드되며 직렬 모니터를 시작하고 전송 속도를 115200으로 변경한 다음 키를 누르거나 인코더를 돌려 값을 확인합니다.
모든 것이 정상이면 다음 부분으로 넘어갑니다. 나는 그것이 가장 문제가 많은 것으로 판명되었으며 가상 USB-> Midi 변환기를 찾지 못했다면이 기사가 존재하지 않았을 것이라고 즉시 말할 것입니다.

PC 소프트웨어(윈도우)

Arduino에서 USB 가상 COM 포트를 통해 데이터를 수신하고 이를 MIDI 시퀀서 프로그램으로 전송하려면 특수 유틸리티인 Serial MIDI Converter V2D(사무실 사이트)가 필요합니다.

이 프로그램은 다중 플랫폼이므로 몇 가지 문제가 있기는 하지만 Windows 7 x64에서 작동했습니다.

실행하고 USB 포트, 전송 속도(115200), MIDI 입력 포트 및 MIDI 출력 포트를 선택합니다.

이제 USB 가상 COM 포트 12로 들어오는 모든 MIDI 데이터는 MIDI Yoke 6 포트로 리디렉션됩니다. (저는 MIDI Yoke 프로그램을 사용하여 가상 MIDI 포트를 만들었습니다.) Microsoft GS Wavetable Synth 및 기타 포트로 리디렉션할 수 있습니다.
프로그램은 항상 켜져 있어야 합니다. 키를 누르거나 인코더 손잡이를 돌리면 하단의 직렬 RX 표시기가 깜박여야 합니다.

포트에서 들어오는 MIDI 데이터를 시각적으로 표시하려면 MIDI-OX 프로그램(사무실 사이트)이 매우 유용하다는 것을 알았습니다.

MIDI 장치 설정에서 MIDI 입력 포트를 설정해야 합니다.

이제 노트 키를 누르거나 휠을 돌리면 모니터 출력에 MIDI 데이터가 표시됩니다.

저것. 소프트웨어와 하드웨어의 도움으로 우리는 Cubase 등의 후속 처리를 위해 컴퓨터로 데이터를 전송하는 Arduino 컨트롤러에서 간단한 MIDI 키보드를 만들 수 있었습니다. 포함. 실시간.
이 프로젝트를 기반으로 DJ 콘솔, 본격적인 MIDI 키보드 등을 만들 수 있습니다.

아래에서 INO 스케치, Serial MIDI Converter V2D, MIDI-OX 및 MIDI Yoke를 다운로드할 수 있습니다.