Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Le soluzioni FSP per il 2026: potenza e IA al centro
Le soluzioni FSP per il 2026: potenza e IA al centro
In occasione del Tech Tour 2025 della European Hardware Association abbiamo incontrato a Taiwan FSP, azienda impegnata nella produzione di alimentatori, chassis e soluzioni di raffreddamento tanto per clienti OEM come a proprio marchio. Potenze sempre più elevate negli alimentatori per far fronte alle necessità delle elaborazioni di intelligenza artificiale.
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa
AWS è il principale operatore di servizi cloud al mondo e da tempo parla delle misure che mette in atto per garantire una maggiore sovranità alle organizzazioni europee. L'azienda ha ora lanciato AWS European Sovereign Cloud, una soluzione specificamente progettata per essere separata e distinta dal cloud "normale" e offrire maggiori tutele e garanzie di sovranità
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Xiaomi ha portato sul mercato internazionale la nuova serie Redmi Note, che rappresenta spesso una delle migliori scelte per chi non vuole spendere molto. Il modello 15 Pro+ punta tutto su una batteria capiente e su un ampio display luminoso, sacrificando qualcosa in termini di potenza bruta e velocità di ricarica
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 19-09-2009, 16:41   #1
alessia86
Member
 
Iscritto dal: Dec 2008
Messaggi: 125
[JAVA] Spiegazione codice d'inserimento di un file sonoro

guardando su dei libri ho trovato il seguente codice che mi permette d'inserire un file sonoro di tipo wave..Ma non ho capito bene come funziona..Qualcuno può spiegarmelo?
Codice:
import java.io.DataInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;

import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.DataLine;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.SourceDataLine;
import javax.sound.sampled.UnsupportedAudioFileException;


 public class sound {

 public AudioFormat format;
 public byte[] samples;

 public sound(String filename){
 try{
	// System.out.println(filename);
 AudioInputStream stream = AudioSystem.getAudioInputStream(new File(filename));
 format = stream.getFormat();
 samples = getSamples(stream);
 }
 catch (UnsupportedAudioFileException e){
 e.printStackTrace();
 }
 catch (IOException e){
 e.printStackTrace();
 }
 }

 public byte[] getSamples(){
 return samples;
 }

 
 public byte[] getSamples(AudioInputStream stream){
 int length = (int)(stream.getFrameLength() * format.getFrameSize());
 byte[] samples = new byte[length];
 DataInputStream in = new DataInputStream(stream);
 try{
 in.readFully(samples);
 }
 catch (IOException e){
 e.printStackTrace();
 }
 return samples;
 }


 public void play(InputStream source){
 // 100 ms buffer for real time change to the sound stream
 int bufferSize = format.getFrameSize() * Math.round(format.getSampleRate() / 10);
 byte[] buffer = new byte[bufferSize];
 SourceDataLine line;
 try{
 DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);
 line = (SourceDataLine)AudioSystem.getLine(info);
 line.open(format, bufferSize);
 }
 catch (LineUnavailableException e){
 e.printStackTrace();
 return;
 }

 line.start();
 try{
 int numBytesRead = 0;
 while (numBytesRead != -1){
 numBytesRead = source.read(buffer, 0, buffer.length);
 if (numBytesRead != -1)
 line.write(buffer, 0, numBytesRead);
 }
 }
 catch (IOException e){
 e.printStackTrace();
 }
 line.drain();
 line.close();
 }


 }
Grazie
alessia86 è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2009, 17:35   #2
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Il bello della rete è che si trovano certi dinosauri...

1. prendi il file audio:

File file = new File("z:\\audio\\sample.wav");

2. Crei un flusso audio che punta a quel file:

AudioInputStream stream = AudioSystem.getAudioInputStream(file);

3. Apri un Clip - che è un riproduttore di file audio

Clip player = AudioSystem.getClip();

4. passi al clip il flusso audio:

player.open(stream);

5. avvii il clip:

player.start();

Fine.

Questo è un esempio completo:

Codice:
import javax.sound.sampled.*;
import java.io.*;

public class Main {

	public static void main(String[] args) throws Throwable {
		File file = new File("z:\\audio\\RRUU005W.wav");
		AudioInputStream in = AudioSystem.getAudioInputStream(file);
		Clip clip = AudioSystem.getClip();
		clip.open(in);
		clip.start();
		Thread.sleep(10000);
	}
}
Lo sleep serve per mantenere in vita la JVM mentre il sotto sistema audio riproduce il file. Non è necessario nel caso di un'applicazione reale perchè in quel caso sarà l'interfaccia a tenere in vita l'applicazione.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2009, 17:53   #3
alessia86
Member
 
Iscritto dal: Dec 2008
Messaggi: 125
Ok grazie..l'ho appena provato e va alla grande...e qst almeno è molto semplice...Ne ho trovato un altra per i file midi..ma anche qst non sono riuscita a capirla bene
Codice:
import java.io.File;
import java.io.IOException;

import javax.sound.midi.InvalidMidiDataException;
import javax.sound.midi.MidiFileFormat;
import javax.sound.midi.MidiSystem;
import javax.sound.midi.MidiUnavailableException;
import javax.sound.midi.Sequence;
import javax.sound.midi.Sequencer;
import javax.swing.*;

public class MusicFile extends JFrame{

	String F;
	Sequence S;
	Sequencer seq;
	
	public MusicFile(String fil){
		
	F=fil;
		try
		{
		File f2=new File(F);
		MidiFileFormat mff2=MidiSystem.getMidiFileFormat(f2);
		S=MidiSystem.getSequence(f2);
		seq=MidiSystem.getSequencer();
		seq.open();
		seq.setSequence(S);
		seq.setLoopCount(99);
		seq.start();


		}
		catch(MidiUnavailableException ecc){}
		catch(InvalidMidiDataException ecc2){}
		catch(IOException ecc3){}
		;
		}
	}
alessia86 è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2009, 18:30   #4
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
La parte sul formato puoi saltarla. Funziona come il clip solo che cambiano i nomi. Prendi un file, ottieni il "flusso dati" - che per MidiSystem è una Sequence anzichè un AudioInputStream:

File file = un File midi
Sequence sequence = MidiSystem.getSequence(file);

Poi prendi un player, in questo caso un Sequencer:

Sequencer player = MidiSystem.getSequencer(true);

lo apri

player.open();

gli passi la sequenza e lo lanci

player.setSequence(sequence);
player.start();

Codice:
import javax.sound.midi.*;
import java.io.*;

public class Main {

	public static void main(String[] args) throws Throwable {
		File file = new File("z:\\prova.mid");
		Sequence sequence = MidiSystem.getSequence(file);
		Sequencer player = MidiSystem.getSequencer(true);
		player.open();
		player.setSequence(sequence);
		player.start();
		Thread.sleep(20000);
		player.close();
	}
}
"setLoop(x)" serve se vuoi riprodurre il suono x volte, come il "loop" di Clip. Se vuoi riprodurre il suono in continuazione dirai setLoop(Sequencer.LOOP_CONTINUOSLY) e lo fermi con stop().

I formati servono quando si ha a che fare con tipi di file audio che non sono direttamente supportati dal sistema di plug-in di javasound (ad esempio ogg per i clip, non so cosa per midi). I file wav, mp3 e midi girano tranquillamente con quelle poche righe su riportate.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 19-09-2009, 18:55   #5
alessia86
Member
 
Iscritto dal: Dec 2008
Messaggi: 125
grazie
alessia86 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
Un hotel italiano fa incetta di recensio...
OnePlus Nord 5 in super offerta su Amazo...
L'innovazione in tournée: arrivan...
Addio al caos dei gruppi Whatsapp: arriv...
Il nuovo chip a 2 nm di Samsung si mostr...
IBM Enterprise Advantage: consulenza per...
Samsung celebra Milano Cortina 2026 con ...
Aritmie cardiache, cresce il numero di c...
Rinviato il secondo lancio del razzo spa...
iPhone 18 Pro: Dynamic Island più...
Pazzesco successo di Xiaomi: la nuova SU...
Il terzo lancio del razzo spaziale Blue ...
Tesla toglie la componente umana dai Rob...
Google Pixel 10 Pro in super offerta su ...
Masters of the Universe: He-Man torna al...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 20:05.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v