Como uso um Sustain Pedal de teclado como entrada para o meu computador?

3

Eu estava esperando que algum super especialista em eletrônica me desse algum conselho. Como obtenho este link para trabalhar com o meu computador? Eu basicamente quero usá-lo para substituir / emular uma tecla ou algo em meus jogos. Alguém com alguma experiência com algo assim tem algum conselho? Estou disposto a experimentar hacks simples relacionados a software ... ou coisas de software mais avançadas se houver recursos online para isso.

Editar:

Eutenteiconectá-loaomicrofoneeeisque,semprequeeuativo(pise)opedal,receboumsinal-estaéagravação(naaudácia).

Oprimeiro"grosso" é de segurar o pedal, o resto foi apenas torneiras.

    
por Dois 07.04.2015 / 15:30

4 respostas

0

Bem, já faz mais ou menos 7 meses e eu esqueci completamente disso ... voltei e tentei de novo hoje e consegui que funcionasse.

Aqui está um programa Java simples que funciona para o meu pedal. Ele converte as impressoras no teclado "V" s (é para eu ativar + voice_record em cS GO)

package pedal2keyboard;

import java.io.ByteArrayOutputStream;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;

import javax.sound.sampled.*;

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;

/***
 * Author: Dois Koh
 * Date: 27th October 2015
 * 
 * Gets your microphone signal and you can go do whatever you want with it.
 * Right now, it takes signals from my Cherub WTB-004 Keyboard Sustain Pedal, plugged into
 * my microphone jack, and converts it into key presses (holds down V when depressed,
 * releases V when released)
 */
public class PedalToKeyboard {

    // Robot for performing keyboard actions (pressing V)
    public static Robot robot = null;

    // Currently 8KHz, 16 bit signal (2 bytes), single channel, signed (+ and -) and BIG ENDIAN format
    public static AudioFormat format = new AudioFormat(8000.0f, 16, 1, true, true);

    public static TargetDataLine microphone = null;
    public static boolean pedalPressed = false;

    public static void main(String[] args) {

        try {
            // Initialize robot for later use
            robot = new Robot();

            // Retrieve the line to from which to read in the audio signal
            microphone = AudioSystem.getTargetDataLine(format);

            // Open the line in the specified format -
            // Currently 8KHz, 16 bit signal (2 bytes), single channel, signed (+ and -) and BIG ENDIAN format      
            microphone.open(new AudioFormat(8000.0f, 16, 1, true, true));

            ByteArrayOutputStream out = new ByteArrayOutputStream();
            byte[] data = new byte[microphone.getBufferSize()/8];

            // Begin audio capture.
            microphone.start();

            int numBytesRead = 0;
            short previousShort = 0;

            // Continue until program is manually terminated
            while (true) {

                // Read the next chunk of data from the TargetDataLine.
                numBytesRead = microphone.read(data, 0, data.length);

                // Reset the buffer (get rid of previous data)
                out.reset();

                // Save this chunk of data.
                out.write(data, 0, numBytesRead);

                byte[] bytes = out.toByteArray();
                short[] shorts = new short[bytes.length/2];

                // to turn bytes to shorts as either big endian or little endian. 
                ByteBuffer.wrap(bytes).order(ByteOrder.BIG_ENDIAN).asShortBuffer().get(shorts);

                // Iterate through retrieved 16 bit data (shorts)
                for (short s : shorts) {

                    // Check if descending or ascending (pedal press is descending, release is ascending)
                    if (s < 0) { // descending                  
                        // make sure drop is large instantaneous drop
                        if (Math.abs(previousShort - s) > 200 && s < -32700) {
                            if (!pedalPressed) {
                                PedalPressedAction();
                                previousShort = s;
                                break;
                            }
                        }
                    } else if (s > 0) { // ascending
                        // make sure increase is large instantaneous increase
                        if (Math.abs(previousShort - s) > 200 && s > 32700) {
                            if (pedalPressed) {
                                PedalReleasedAction();
                                previousShort = s;
                                break;
                            }
                        }
                    }

                    previousShort = s;
                }
            }    

        } catch (LineUnavailableException | AWTException e) {
            e.printStackTrace();
        } finally {
            if (microphone != null)
                microphone.close();
        }
    }

    /***
     * The action to perform when the pedal is depressed
     */
    public static void PedalPressedAction() {
        pedalPressed = true;
        robot.keyPress(KeyEvent.VK_V);
    }

    /***
     * The action to perform when the pedal is released
     */
    public static void PedalReleasedAction(){
        pedalPressed = false;
        robot.keyRelease(KeyEvent.VK_V);        
    }
}
    
por 27.10.2015 / 15:32
2

Por que passar por todos os problemas, quando você pode simplesmente comprar exatamente o que está procurando? Um pedal USB para PCs, como este :

Eles são baratos e fazem exatamente o que você está procurando fazer.

    
por 07.04.2015 / 16:41
1

Para realmente fazer isso. Tudo o que você realmente precisa é de teclado. Algo pequeno como este . Pegue o pedal e o teclado. Você pode até mesmo encaixar o teclado dentro do pedal com o cabo USB para substituir o fio de áudio. O pedal provavelmente tem 3 derivações, + e amp; - e o cabo do resistor. Basta encontrar os + e - leva através de tentativa e erro (apenas 6 possíveis escolhas). Ligue uma das chaves aos cabos no pedal. Quando você aperta o pedal e fecha o circuito ... pressione a tecla!

    
por 07.04.2015 / 19:46
-2

Como você descobriu, este pedal é apenas um interruptor momentâneo.

Você precisa de um dispositivo midi "head" para ler o estado do switch e converter para midi; uma maneira de conectar essa unidade principal ao seu computador; e, em seguida, software para fazer uso da entrada midi.

Como alternativa, você pode procurar dispositivos que convertam em entradas do joystick. As pessoas que fazem simuladores de cabine usam interruptores reais para fazer interface com seu software sim. Se você seguir esse caminho, você usaria um simples driver joystick-para-midi e, novamente, um software adequado para uso com as entradas.

Note que você pode obter um gamepad de 10 $ e hackear os cabos na placa de circuito e conectar os interruptores de 1 $ Radio Shack montados em uma placa para um banco inteiro de pedais. Você usaria o driver joy-midi para rotear os sinais para um DAW ou um Amp Simulator.

Normalmente, para interface de música e integração de gravação, você quer um aplicativo DAW (Digital Audio Workstation).

Também há intréfaces de áudio no estilo wah-wah que possuem portas para pedais de expressão. Estes são geralmente para guitarra, mas não há razão para que você não possa usá-los como interfaces de áudio gerais, e os sinais midi podem ser roteados para a função ANY , assim o pedal de balancim pode ser usado por ex. crossfade, volume, wah, interruptor de alternância etc etc

Mesmo com um dispositivo apropriado para obter o botão para se registrar no seu PC, você não pode usar o Audacity para isso. Você pode tentar o "vsthost" livre e alguns proccessors de efeito de VST (tente "simuanalog" também grátis). O VSTHost é um host para carregar simuladores de amp e pode rotear sinais de entrada midi e joystick para qualquer função / botão / discagem exposta em um aplicativo VST. Tem um gravador embutido, e você pode então editar os arquivos com audácia.

Qualquer coisa que gere voltagem pode ser conectada à tomada do microfone e gerar um sinal gravável, desde que não ative o computador e, mesmo assim ...

Então: para recapitular. Você precisa cortar seus dois fios (cabo de 1 / 4-1 / 8 polegadas despojado e soldado a um joypad) ou obter o sinal no computador no joystick ou midi. Então você pode traduzir esse sinal para qualquer coisa que lide com isso. Joy2midi, tradutora Midi, midi2joy.

    
por 07.04.2015 / 16:48