Giter Site home page Giter Site logo

tomoyanonymous / rtpsendreceive Goto Github PK

View Code? Open in Web Editor NEW
20.0 6.0 0.0 395 KB

Cycling'74 Max external objects for sending/receiving ah audio signal over IP using RTP protocol based on ffmpeg

License: GNU Lesser General Public License v3.0

CMake 14.39% Max 40.77% C++ 43.54% Shell 0.90% JavaScript 0.40%
maxmsppackage maxmsp-external maxmsp rtp-streaming ffmpeg-wrapper

rtpsendreceive's Introduction

mc.rtpsend~ / mc.rtpreceive~

master:build & test dev: build & test

2022/01/06: This project is not actively maintained. jit.ndi also supports the transmission of uncompressed audio over local network and it should be more stable now. If you want to continue to maintain or develop this project, I will support. Just send PR or contact me.

External objects for Cycling'74 Max to send MSP signal over network using rtp protocol. An modern alternative to legacy netsend~ & netreceive~ objects.

  • Send mc audio signal through 16bit-integer PCM signals.
  • Sending signals over NAT (= Global Network) is not supported. Consider use VPN.

notes & todos

  • When use this external, in Max's "Audio Setting", "IO Vector Size" and "Signal Vector Size" must be the same. If signal vector size is too smaller than IO vector size, it fails to send audio correctly.
  • Currently number of channels are fixed by an attribute "channels", an auto-adaptation depending on input channels is not available due to a limitation of min-api.
  • A codec is fixed to Linear PCM 16bit(Big Endian). For future, Opus will be added.

Installation

Get latest version from release page.

Unzip downloaded folder and drop the root folder into Max package directory (for macOS, ~/Documents/Max 8/Packages) if you don't need source anymore, you can delete files other than in externals,docs,help directories.

Build from Source

You need cmake and C,C++ compiler. This project uses ffmpeg library for rtp streaming. This project installs ffmpeg using vcpkg, a cross-platform paackage manager registered as submodule at ./vcpkg.

For a more detailed workflow, read GitHub Actions workflow in ./.github/workflows/build_and_test.yml.

macOS

Currently tested on macOS 10.15.3, XCode 11.4.1.

Open a terminal and type following commands.

git clone https://github.com/tomoyanonymous/rtpsendreceive.git --recursive
cd rtpsendreceive

./vcpkg/bootstrap-vcpkg.sh
./vcpkg/vcpkg install ffmpeg\[avformat,avdevice,avcodec,core\]

cmake . -B build
cmake --build build --target all

Windows

Currently tested on Visual Studio Community 2019

Open "Developer Command Prompt for VS 2019" and type following commands.

git clone https://github.com/tomoyanonymous/rtpsendreceive.git --recursive
cd rtpsendreceive

.\vcpkg\bootstrap-vcpkg.bat
.\vcpkg\vcpkg install ffmpeg[avformat,avdevice,avcodec,core]:x64-windows

cmake . -B build
cmake --build build --target all

Copyrights

Tomoya Matsuura 松浦知也

https://matsuuratomoya.com/en

License

LGPL v3.0

Acknowledgements

The objects are originally made for works cooparated with stu.inc.

rtpsendreceive's People

Contributors

tomoyanonymous avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

rtpsendreceive's Issues

Send audio outside of Max

Hi Tomoya! Thank you for your work!

Problem

I couldn't make this external work with pulseaudio RTP receiver and found no information online, although the problem seems quite common.

More specifically, I tried to use mc.rtpsend~ to send audio to a Raspberry PI on the same network as Max. I expect that pulseaudio module-rtp-recv should be able to receive the stream and sink it to the speaker.

I can't find alternatives, but my experience with audio streaming is very limited.

Potential solution

It will be amazing if you can provide a documentation of what exactly happening under the hood. Or, event better, if you would give an example of receiving audio using pulseaudio RTP, Roc or anything else that would work on raspberry/any other linux machine.

stream underflow(update dependencies)

Hello,
I'm trying to use rtpsendreceive with Max 8 but I've got errors in the console : "stream underflow detected !"
I've no sound back in the rtpreceive with the loop patch test.
I'm using Max 8.5.2 and Windows 10.

Any help would be appreciated

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.