Coder Social home page Coder Social logo

Comments (7)

gordonklaus avatar gordonklaus commented on July 24, 2024

You can do this with only small modifications to examples/record.go.

from portaudio.

adneg avatar adneg commented on July 24, 2024

hello. I have similar problem

I want send audio over udp her:
https://github.com/adneg/streemmic/
This work. I send over udp gzip pcm audio.
But I want use codec (encode and deocde) for this repo: https://github.com/zaf/g711/
Reduce audio size.
I can't do that becaues i don't now how get 16bit 8kHz LPCM with this lib..
It is posible to get example?

Next problem is how shout record to file raw pcm?
I try delete from record.go the code that adds the file header. But when i tray play in linux:
play -t raw -r 44100 -s4 test.raw it's quiet.

I apologize for my English and thank you for the library.

from portaudio.

gordonklaus avatar gordonklaus commented on July 24, 2024

@adneg You should be able to change int32 on this line to int16 and 44100 to 8000 on the next line to get the format you want. And then:

enc, err := g711.NewUlawEncoder(w, g711.Lpcm)
binary.Write(enc, binary.BigEndian, in)

although I'm not sure about the endianness.

I don't know why your play command is quiet. Are you sure your microphone is working? Have you tried the command with a known good file?

from portaudio.

adneg avatar adneg commented on July 24, 2024

I have to do something wrong
but I do not know what.

package main

import (
	"encoding/binary"
	//"fmt"
	"os"
	"os/signal"
	//"strings"

	"github.com/gordonklaus/portaudio"
)

func main() {
	sig := make(chan os.Signal, 1)
	signal.Notify(sig, os.Interrupt, os.Kill)

	fileName := "test.raw"

	f, err := os.Create(fileName)
	chk(err)

	portaudio.Initialize()
	defer portaudio.Terminate()
	in := make([]int16, 64)
	stream, err := portaudio.OpenDefaultStream(1, 0, 44100, len(in), in)
	chk(err)
	defer stream.Close()

	chk(stream.Start())
	for {
		chk(stream.Read())
		chk(binary.Write(f, binary.BigEndian, in))
		//nSamples += len(in)
		select {
		case <-sig:
			return
		default:
		}
	}
	chk(stream.Stop())
}

func chk(err error) {
	if err != nil {
		panic(err)
	}
}

my test.raw is 1 channel 16-bit 44100Hz.
i play:
play -t raw -r 44100 -e signed -b 16 -c 1 test.raw

test.raw:

 File Size: 971k      Bit Rate: 706k
  Encoding: Signed PCM    
  Channels: 1 @ 16-bit   
Samplerate: 44100Hz      
Replaygain: off         
  Duration: 00:00:11.00  

and is only nois .
hmmm
but when change
in record.go lines:
chk(binary.Write(f, binary.BigEndian, int16(16))) //bits per sample
and

in := make([]int16, 64)
stream, err := portaudio.OpenDefaultStream(1, 0, 44100, len(in), in)

gor run recrod test.aiff
next a play:

play test.aiff 

test.aiff:

 File Size: 185k      Bit Rate: 353k
  Encoding: Signed PCM    
  Channels: 1 @ 16-bit   
Samplerate: 44100Hz      
Replaygain: off         
  Duration: 00:00:04.20  

In:50.0% 00:00:02.10 [00:00:02.10] Out:92.6k [      |      ] Hd:0.0 Clip:0    
Done.

I hear what I was saying.

hmmm why is there different Bit Rate.

from portaudio.

gordonklaus avatar gordonklaus commented on July 24, 2024

@adneg Try binary.LittleEndian?

from portaudio.

adneg avatar adneg commented on July 24, 2024

@gordonklaus Yes it helped. it solved all my problems. Thank you very much.

from portaudio.

gordonklaus avatar gordonklaus commented on July 24, 2024

@adneg You're welcome 😄

from portaudio.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.