Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα. Sorry αν δεν έπρεπε να ποστάρω αυτό το θέμα εδώ. Λοιπόν. Θέλω να φτιάξω μια απλή εφαρμογή με την οποία θα "παίζω" drums. Πιο αναλυτικά : Θέλω με συγκεκριμένα πλήκτρα του πληκτρολογίου, πατώντας π.χ. το a να ακούγεται το μεγαλύτερο τύμπανο. Με το b π.χ. να ακούγεται το 1 "πιατίνι". Δηλαδή κάτι σαν αυτό που είχε κάνει η google αλλά σε "drums version"... Από που θα αρχίσω και τι θα χρειαστώ;; Να πω πως δεν ξέρω τίποτε από προγραμματισμό.. :rolleyes:

 

Thanks! :)

Δημοσ.

φιλε μου λογικα για αυτο που ζητας θα υπαρχουν εκαντονταδες πτογραματα στο Νετ....

 

 

νομιζω θα ειναι ευκολο να βρεις κατι ...

Δημοσ.

Καλησπέρα. Sorry αν δεν έπρεπε να ποστάρω αυτό το θέμα εδώ. Λοιπόν. Θέλω να φτιάξω μια απλή εφαρμογή με την οποία θα "παίζω" drums. Πιο αναλυτικά : Θέλω με συγκεκριμένα πλήκτρα του πληκτρολογίου, πατώντας π.χ. το a να ακούγεται το μεγαλύτερο τύμπανο. Με το b π.χ. να ακούγεται το 1 "πιατίνι". Δηλαδή κάτι σαν αυτό που είχε κάνει η google αλλά σε "drums version"... Από που θα αρχίσω και τι θα χρειαστώ;; Να πω πως δεν ξέρω τίποτε από προγραμματισμό.. :rolleyes:

 

Thanks! :)

Μπορείς να ακολουθήσεις δυο δρόμους, ο πρώτος είναι να χρησιμοποιήσεις το MIDI API που μπορεί να προσφέρει το λειτουργικό σου σύστημα (δεν το προσδιορίζεις). Ο δεύτερος είναι η αναπαραγωγή κάποιου προ ηχογραφημένου ήχου (Sample) χρησιμοποιώντας το ανάλογο API που προσφέρει το *λειτουργικό σου σύστημα για αναπαραγωγή. Ο πρώτος δρόμος είναι περισσότερο περίπλοκος (αλλά προσφέρει μεγαλύτερη ευελιξία στην διαχείριση του ήχου), ο δεύτερος είναι λιγότερο περίπλοκος -μπορεί να αρκεί ακόμη και μια εντολή- (αλλά προσφέρει μικρότερη ευελιξία) -και είναι αυτός που χρησιμοποιεί η Google στην σελίδα που ανάρτησες ;). Από εκεί και πέρα είναι καθαρά θέμα event-driven προγραμματισμού να κάνει κλικ ο χρήστης στο ανάλογο όργανο και να αναπαράγεται ο κατάλληλος ήχος (εννοείται ότι θα χρειαστείς στην δεύτερη περίπτωση και τα ανάλογα samples/wavs ή mp3s).

 

* Εκτός του Λ.Σ. υπάρχουν πάντα και έτοιμες βιβλιοθήκες τρίτων που καθιστούν τον προγραμματισμό τέτοιων εφαρμογών απλούστατο.

 

Καλή τύχη!!

Δημοσ.

@Directx Σε ευχαριστώ πολύ για το ενδιαφέρον σου.

1) Η εφαρμογή που θέλω να κάνω θέλω να είναι για windows και αν γίνεται και για linux. Ας γίνει όμως πρώτα για windows και μετά βλέπουμε.

2) Όπως είπες και εσύ θα χρειαστώ κάποια samples. Αυτό έχω στο μυαλό μου. Να έχω έτοιμα τα samples, και π.χ. να βγαίνει ένα παράθυρο με την εικόνα ενός drumset και να παίζει ο κάθε ήχος ανάλογα με το πλήκτρο που πατάς, π.χ. με το 5 να είναι το "απλό", με το 7 και το 9 να είναι τα δύο "πιατίνια"

3) Anyway, μήπως μπορείς να μου πεις σε τι γλώσσα θα το γράψω και τι είδους εντολές θα χρησιμοποιήσω;;;

Δημοσ.

@Directx Σε ευχαριστώ πολύ για το ενδιαφέρον σου.

1) Η εφαρμογή που θέλω να κάνω θέλω να είναι για windows και αν γίνεται και για linux. Ας γίνει όμως πρώτα για windows και μετά βλέπουμε.

2) Όπως είπες και εσύ θα χρειαστώ κάποια samples. Αυτό έχω στο μυαλό μου. Να έχω έτοιμα τα samples, και π.χ. να βγαίνει ένα παράθυρο με την εικόνα ενός drumset και να παίζει ο κάθε ήχος ανάλογα με το πλήκτρο που πατάς, π.χ. με το 5 να είναι το "απλό", με το 7 και το 9 να είναι τα δύο "πιατίνια"

3) Anyway, μήπως μπορείς να μου πεις σε τι γλώσσα θα το γράψω και τι είδους εντολές θα χρησιμοποιήσω;;;

 

Αν υποθέσουμε ότι η εφαρμογή σου θα αφορά τα Windows (και όχι μόνο) θα μπορούσες να την γράψεις ως εξής.. βασιζόμενος πάντα στην εμπορική βιβλιοθήκη διαχείρισης ήχου FMOD (νομίζω ότι επιτρέπει την ελεύθερη χρήση της όταν το Project δεν είναι εμπορικό, δες την άδεια χρήσης!) η οποία προσφέρει έναν πανίσχυρο software mixer και ένα αρκετά φιλικό στην χρήση API το οποίο βέβαια προϋποθέτει γνώση της γλώσσας C\C++.

 

Σε αυτή την περίπτωση, θα ήταν αρκετό αυτό το πρόγραμμα, για να παίξεις μερικά samples πατώντας μεταξύ των πλήκτρων 1, 2 ή 3 για έξοδος:

 

>
/*
* Simple audio program using FMOD library, xdir.
*/

#include <stdio.h>
#include <conio.h>
#include "fmod.h"

#define _KEY_QUIT '3'
#define _NUMKEY_START '1'
#define _NUMKEY_END '2'

int main(void) {

FMOD_SYSTEM *ptrFMOD = NULL;

/* Create FMOD */
if(FMOD_System_Create(&ptrFMOD) != FMOD_OK)
	puts("FMOD System Create failed!");
else {
	/* Prepare FMOD */
	if(FMOD_System_Init(ptrFMOD, 12, FMOD_INIT_NORMAL, NULL) != FMOD_OK)
		puts("FMOD System Init failed!");
	else {
		FMOD_SOUND *Sound_Array[2] = { NULL };

		/* Load two instruments into FMOD sound banks (using FMOD SOFTMIXER) */
		if((FMOD_System_CreateSound(ptrFMOD, "Crash.wav",
			FMOD_SOFTWARE, NULL, &Sound_Array[0]) != FMOD_OK)
		|| (FMOD_System_CreateSound(ptrFMOD, "HH Op.wav",
			FMOD_SOFTWARE, NULL, &Sound_Array[1]) != FMOD_OK))
				puts("Sound load failed!");
		else {
				/* FMOD ready, wait for keyboard input using CONIO */
				int Key = 0;
				FMOD_CHANNEL *Channel;
				FMOD_RESULT err;

				puts("01. Sound #1\n02. Sound #2\n03. Exit");

				while((Key = getch()) != _KEY_QUIT)
					if(Key >= _NUMKEY_START && Key <= _NUMKEY_END)
						if((err = FMOD_System_PlaySound(ptrFMOD, FMOD_CHANNEL_FREE,
							Sound_Array[(Key - '0') - 1], 0, &Channel)) != FMOD_OK)
								puts("error");
			}

		FMOD_System_Close(ptrFMOD);
		FMOD_System_Release(ptrFMOD);
	}
}

return 0;
}

 

(Το παραπάνω πρόγραμμα απαιτεί C++ Builder για να μεταφραστεί λόγο της βιβλιοθήκης διαχείρισης εισόδου CONIO που δεν υπάρχει σε άλλους μεταφραστές)

 

Φυσικά μπορεί να υπάρχουν και άλλες βιβλιοθήκες ενδεχομένως Open Source ή άλλες γλώσσες που να σε βολεύουν καλύτερα κλπ (εσύ αποφασίζεις), αλλά νομίζω ότι το παραπάνω είναι αρκετό για να μπεις στο πνεύμα.

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...