質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

解決済

1回答

1757閲覧

Processingでkeypressedを使ったコードで困っています。

rakuraku

総合スコア1

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

0グッド

0クリップ

投稿2020/07/30 19:42

前提・実現したいこと

Keypressedを使って音が出るコードを作っています。押されたキーの音が出ている間に違うキーが押された時に前に押されていたキーを止めて次の音を流したいです。どのようなコードを使ったらいいかご教授お願いします。

"p"のキーが押され音が流れている間に"o"のキーを押した時"p"の音が止まり"o"が鳴り始めて欲しい

該当のソースコード

import ddf.minim.*;

Minim minim;
AudioPlayer song1,song2,song3,song4;

void setup()
{
minim = new Minim(this);
song1 = minim.loadFile("/Users/raku/Desktop/sample/STE-117.wav");
song2 = minim.loadFile("/Users/raku/Desktop/sample/STE-119.wav");
song3 = minim.loadFile("/Users/raku/Desktop/sample/STE-120.wav");
song4= minim.loadFile("/Users/raku/Desktop/sample/STE-122.wav");
}

void draw()
{
}

void keyPressed()
{
if ( key == 'p' )
{
song1.play();
}
if ( key == 'o' )
{
song2.play();
}

if ( key == 'i' )
{
song3.play();
}

if ( key == 'u' )
{
song4.play();
}
}

void stop()
{
song1.close();
song2.close();
song3.close();
song4.close();
minim.stop();
super.stop();
}

補足情報(FW/ツールのバージョンなど)

Processing 3.5.4

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2020/07/30 21:39

現状ではどういう動作となるんでしょうか
guest

回答1

0

ベストアンサー

違うキーが押された時

「違う」を調べるにはどうするか。これまで押されていたキーと、いま押されたキーが等しいかどうかを調べればいい。いま押されたキーはkeyで取得出来るとして、ではこれまで押されていたキーとは? 前の回のkeyが持っていた値。

ということで、例えば
char prevKey;
とでも変数を設けて、以前のkeyを保持させましょう。

void keyPressed(){ if( prevKey!=key ){ //違うキーが押されたか? if ( key == 'p' ) song2.pause(); //前に押されていたキーを止めて song3.pause(); song4.pause(); song1.rewind(); song1.play(); //次の音を流したい } <略> } prevKey=key; //今のkeyは次回には「直前に押されていたkey」となる }

投稿2020/07/30 23:07

thkana

総合スコア7639

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

rakuraku

2020/07/31 21:51

とても分かりやすい解説ありがとうございましたっ
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問