色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用Arduino Processing和Wekinator按鈕更改聲音播放器的音高

454398 ? 來源:工程師吳畏 ? 2019-07-30 14:33 ? 次閱讀

設置Arduino Board

這個項目使用連接到Arduino Uno的五個按鈕。使用Arduino為按鈕建立連接,如下圖所示。

項目草圖

在輸入端,我們將有一個Arduino草圖和一個Processing草圖。 Arduino草圖將讀取五個按鈕的狀態,并通過串行通信將其轉發到Processing。 Processing sketch將接收此數據,并通過OSC(開放式聲音控制)協議將其轉發給Wekinator。

Arduino Sketch

#define buttonPin1 6

#define buttonPin2 5

#define buttonPin3 4

#define buttonPin4 3

#define buttonPin5 2

int inByte = 0; // incoming serial byte

// the setup function runs once when you press reset or power the board

void setup() {

Serial.begin(115200);

pinMode(buttonPin1, INPUT);

pinMode(buttonPin2, INPUT);

pinMode(buttonPin3, INPUT);

pinMode(buttonPin4, INPUT);

pinMode(buttonPin5, INPUT);

establishContact(); // send a byte to establish contact until receiver

// responds

}

// the loop function runs over and over again forever

void loop() {

// if we get a valid byte, read button pins:

if (Serial.available() 》 0) {

// get incoming byte:

inByte = Serial.read();

// read the state of the pushbuttons:

int buttonState1 = digitalRead(buttonPin1);

int buttonState2 = digitalRead(buttonPin2);

int buttonState3 = digitalRead(buttonPin3);

int buttonState4 = digitalRead(buttonPin4);

int buttonState5 = digitalRead(buttonPin5);

Serial.write(buttonState1);

Serial.write(buttonState2);

Serial.write(buttonState3);

Serial.write(buttonState4);

Serial.write(buttonState5);

}

}

void establishContact() {

while (Serial.available() 《= 0) {

Serial.print(‘A’); // send a capital A

delay(300);

}

}

處理草圖

import processing.serial.*;

import oscP5.*;

import netP5.*;

OscP5 oscP5;

NetAddress dest;

Serial myPort; // The serial port

int[] serialInArray = new int[5]; // Where we‘ll put what we receive

int serialCount = 0; // A count of how many bytes we receive

int button1, button2, button3, button4, button5;

boolean firstContact = false; // Whether we’ve heard from the microcontroller

void setup() {

size(256, 256); // Stage size

noStroke(); // No border on the next thing drawn

// Print a list of the serial ports, for debugging purposes:

println(Serial.list());

// I know that the first port in the serial list on my mac

// is always my FTDI adaptor, so I open Serial.list()[0]。

// On Windows machines, this generally opens COM1.

// Open whatever port is the one you‘re using.

String portName = Serial.list()[0];

myPort = new Serial(this, portName, 115200);

/* start oscP5, sending messages at port 9000 */

oscP5 = new OscP5(this,9000);

dest = new NetAddress(“127.0.0.1”,6448);

}

void draw() {

//Send the OSC message

sendOsc();

}

void serialEvent(Serial myPort) {

// read a byte from the serial port:

int inByte = myPort.read();

// if this is the first byte received, and it’s an A,

// clear the serial buffer and note that you‘ve

// had first contact from the microcontroller.

// Otherwise, add the incoming byte to the array:

if (firstContact == false) {

if (inByte == ’A‘) {

myPort.clear(); // clear the serial port buffer

firstContact = true; // you’ve had first contact from the microcontroller

myPort.write(‘A’); // ask for more

}

}

else {

// Add the latest byte from the serial port to array:

serialInArray[serialCount] = inByte;

serialCount++;

// If we have 3 bytes:

if (serialCount 》 4 ) {

button1 = serialInArray[0];

button2 = serialInArray[1];

button3 = serialInArray[2];

button4 = serialInArray[3];

button5 = serialInArray[4];

// print the values (for debugging purposes only):

println(button1 + “&” + button2 + “&” + button3 + “&” + button4 + “&” + button5);

// Send a capital A to request new sensor readings:

myPort.write(‘A’);

// Reset serialCount:

serialCount = 0;

}

}

}

void sendOsc() {

OscMessage msg = new OscMessage(“/wek/inputs”);

msg.add((float)button1);

msg.add((float)button2);

msg.add((float)button3);

msg.add((float)button4);

msg.add((float)button5);

oscP5.send(msg, dest);

}

設置ChucK

在輸出端,我們可以使用ChucK從Wekinator接收五個連續輸出,并根據這些輸出發出聲音。

下載您正在使用的操作系統的FM Synthesis示例。

現在打開終端并轉到您放置它的目錄并輸入以下行:

chuck FMSynth_5ContinousOutputs.ck

Chuck將開始收聽Wekinator的輸出并接收輸出,它將改變聲音的音高。

設置Wekinator

現在打開Wekinator并對設置進行以下調整:

將輸入設置為5并輸出為5

選擇輸出鍵入到所有連續

Wekinator將從Processing接收五個輸入,并在訓練后將向Chuck發送五個不同的輸出。從那里,ChucK將根據Wekinator輸出產生不同的聲音。

點擊 下一步 按鈕,您將看到此窗口:

按第一個按鈕,然后單擊 隨機化 。開始錄制一秒鐘,它將記錄一些樣本。

按第二個按鈕,然后單擊 隨機化 的。然后記錄一秒。

同樣,記錄其他三個按鈕的樣本。

記錄五個樣本后,單擊在 火車 上訓練Wekinator。然后單擊 運行 。現在當您按下按鈕時,程序將根據您提供的輸入發出聲音。

相關項目

如何構建Arduino演講者幾分鐘播放音樂

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Processing
    +關注

    關注

    0

    文章

    10

    瀏覽量

    8961
  • Arduino
    +關注

    關注

    188

    文章

    6469

    瀏覽量

    186962
收藏 人收藏

    評論

    相關推薦

    海貝R1便攜音樂播放器開箱

    作為一個愛聽音樂打發時間的玩家,我已經習慣隨身攜帶一款小巧輕便的音樂播放器,從早期的CD播放器到現在的數碼播放器,它總能在不經意間中給我帶來簡單的快樂。不管是逛街等人的時候,還是工作壓力大的時候
    的頭像 發表于 12-09 09:40 ?136次閱讀
    海貝R1便攜音樂<b class='flag-5'>播放器</b>開箱

    AM3354處理wince系統調playsound播放聲音,有電流雜音怎么解決?

    335板子wince7系統下調用playsound接口播放wav格式聲音總是有雜音,同一塊板子如果用播放器播放音頻 是沒有雜音的。 同一塊板子wince6系統下調用playsoun
    發表于 10-29 06:46

    TLV320AIC3106335板子wince系統下調用playsound接口播放wav格式聲音總是有雜音,怎么解決?

    TLV320AIC3106335板子wince系統下調用playsound接口播放wav格式聲音總是有雜音,同一塊板子如果用播放器播放音頻 是沒有雜音的。 我用用飛思卡爾的某個ce系
    發表于 10-25 08:00

    變速播放器1和2的區別

    關于變速播放器1和2的區別,由于這里并未明確指出“變速播放器1”和“變速播放器2”具體指的是哪兩款軟件,因此我無法提供這兩款特定軟件之間的對比。不過,我可以從一般意義上探討變速播放器
    的頭像 發表于 10-14 09:48 ?202次閱讀

    步步高AB915D DVD播放器維修圖紙

    步步高AB915D DVD播放器采用ZIVA-4.1芯片方案
    發表于 09-29 10:18 ?0次下載

    為什么好的播放器還要配解碼

    好的播放器之所以需要配備解碼,是因為音頻和視頻文件的編碼和解碼是一個復雜的過程,涉及到多種技術和標準。解碼的作用是將壓縮的音頻和視頻數據還原成可以被播放設備識別和
    的頭像 發表于 09-23 18:02 ?1152次閱讀

    數字播放器和解碼

    數字播放器和解碼的組合能夠提供更優質的音頻體驗。數字播放器負責處理和傳輸音頻數據,而解碼則負責將這些數據轉換為高質量的模擬信號。它們的配合可以確保你聽到的音頻既清晰又真實。
    的頭像 發表于 09-06 17:35 ?1028次閱讀
    數字<b class='flag-5'>播放器</b>和解碼<b class='flag-5'>器</b>

    HarmonyOS開發案例:【視頻播放器

    使用ArkTS語言實現視頻播放器,主要包括主頁面和視頻播放頁面
    的頭像 發表于 04-24 14:52 ?882次閱讀
    HarmonyOS開發案例:【視頻<b class='flag-5'>播放器</b>】

    HarmonyOS開發案例:【視頻播放器

    使用ArkTS語言實現視頻播放器,主要包括主界面和視頻播放界面,
    的頭像 發表于 04-23 17:25 ?683次閱讀
    HarmonyOS開發案例:【視頻<b class='flag-5'>播放器</b>】

    HarmonyOS開發案例:【音樂播放器

    使用ArkTS語言實現了一個簡易的音樂播放器應用
    的頭像 發表于 04-23 15:44 ?995次閱讀
    HarmonyOS開發案例:【音樂<b class='flag-5'>播放器</b>】

    HarmonyOS開發案例:【視頻播放器

    基于video、swiper和slider組件,實現簡單的視頻播放器,可支持海報輪播、視頻播放等功能。
    的頭像 發表于 04-22 21:06 ?463次閱讀
    HarmonyOS開發案例:【視頻<b class='flag-5'>播放器</b>】

    用STM32F105的USB做了一個讀U盤MP3的播放器,為什么聽到的音樂播放速度很快?

    最近用STM32F105的USB做了一個讀U盤MP3的播放器,使用I2S2_DMA輸出音頻數據,再使用TAS5711數字功放進行輸出聲音。讀出文件的采樣為44.1khz, I2S也設置為此采樣率。不知為何,聽到的音樂播放速度很快
    發表于 04-02 06:52

    便攜式音頻播放器/迷你小音響實現Hi-Fi高保真音質

    便攜式音頻播放器/迷你小音響實現Hi-Fi高保真音質
    的頭像 發表于 02-04 09:53 ?1086次閱讀

    車載播放器怎么選擇格式

    選購車載播放器時,格式選擇是一個關鍵的因素。不同的格式支持不同的音頻和視頻文件類型,因此在購買之前了解和理解各種格式是非常重要的。下面將為您詳細介紹車載播放器的格式選擇。 一、音頻格式 MP3
    的頭像 發表于 01-05 16:36 ?1711次閱讀

    基于FPGA的音頻播放器設計

    主要是音頻播放器設計不太會,想問各位大神怎么樣可以實現用verilog語言實現音頻播放,通過串口輸出
    發表于 01-03 13:54
    主站蜘蛛池模板: 老师紧窄粉嫩| 成人高清网站| 伊人影院中文字幕| 亚州日韩精品AV片无码中文| 色吧电影院| 色偷偷网址| 十九岁在线观看免费完整版电影 | 99久久精品免费看国产一区二区三区 | 乱精品一区字幕二区| 久久国产免费观看精品1| 好大太快了快插穿子宫了| 国产午夜免费不卡精品理论片| 国产69精品久久久久无码麻豆| 成人公开免费视频| 丰满少妇被猛烈进出69影院| 动漫H片在线观看播放免费| 俄罗斯大肥BBXX| 国产不卡一卡2卡三卡4卡网站| 成视频高清| 国产精品免费一区二区区| 国产精品久久高潮呻吟无码| 国产人妻人伦精品59HHH| 含羞草传媒在线观看| 九九热在线视频精品店 | 动漫美女脱小内内露尿口| 国产成人mv 在线播放| 国产精品在线手机视频| 國產麻豆AVMDXMDX| 久久久久国产精品嫩草影院| 伦理片在线线手机版韩国免费观看 | 东京热一本无码av| 国产精品99久久久久久人韩国| 国产精品熟女人妻| 果冻传媒在线观看视频| 久久免费电影| 浓毛BWBWBWBWBW日本| 三叶草成人| 亚洲精品美女久久久久99| 正在播放国产精品| wwwwxxxx欧美| 国产免费人成在线视频有码|