Hello Sir,

giuliomoro

I have four strings and one pickup for the electric violin. The pickup, transducer, plugs directly into the input of the BELA Cape.

My speaker works. I have used it before w/ the library you all have provided. I also can control the library to handle BELA source for GUI applications like you all described in the lectures. When you ask 'what processing,' I am not sure I understand.

If I can use C++ as the source, that is okay. I have not added any external sensors to the BELA outside of the transducer/pickup for gaining sound attention.

Seth

P.S. I figured I could get the input of the transducer and output it to a speaker via BELA. Again, I have not added any other external hardware. I am using the output and not the speaker outputs on the BELA for sound for now.

Would this be a starter idea? https://github.com/BelaPlatform/Bela/blob/master/examples/Audio/convolver/render.cpp

    Hello giuliomoro ,

    Would me using a 'string' midi be possible? For instance, once I get the midi working w/ the four strings and creating different tones w/ each, separate string, I could then move away from that idea.

    Moving away from that idea of a four string midi is secondly, though.

    I would like to be able to control the strings like a midi at first and then progress slowly w/ other ideas.

    Seth

    P.S. I think this better describes what I am looking to attain.

      giuliomoro audioRead

      Hello Sir,

      What exact arguments does the audioRead() function take and where can I find it in the source for BELA?

      Seth

        silver2row What exact arguments does the audioRead() function take and where can I find it in the source for BELA?

        you can find them here, or in the documentation tab of the Bela IDE.

        silver2row When you ask 'what processing,' I am not sure I understand.

        the question here is: what does Bela do in your system. I assume you don't want the sound to just pass through it, but that you want to somehow modify the sound of your pickup as it goes through Bela.

        silver2row some source
        silver2row C++ as the source,

        I know seem to understand that by "source" in your original "diagram" you meant "source code", so the question is: what should that code do? How will it modify (process) the sound ?

        Whether it's a good starting idea depends on what you want to achieve. That example processes incoming audio via a short convolution. This could be used, for instance, to add a more "wooden" resonance to the sound picked up by the pickup installed on your violin.

        silver2row Would me using a 'string' midi be possible? For instance, once I get the midi working w/ the four strings and creating different tones w/ each, separate string, I could then move away from that idea.

        it seems that you want to process the sound coming from the pickup to generate MIDI data. This is much easier said than done. The process of pitch an envelope extraction is by itself fairly challenging when dealing with polyphonic signals. We do not have ready-made code that would do just that, however i believe in the online course there is a class on envelope detection. Even once you get to the point where you have pitch and envelope, the process of generating MIDI data from it is not straightforward either (one could easily spend a PhD working on just that), as MIDI is fundamentally the wrong tool for the job (see for example Moore, The Dysfunctions of MIDI, 1988. Even if you got MIDI out of it, where would you send that MIDI data to in order to synthesise a signal? Virtually no commercially available plugin will run on Bela (or most other embedded ARM computer, for what is worth), so you may end up having to run the sound engine on a laptop connected to Bela, in which case you could instead just use a soundcard and do without using Bela at all.

        So, if you are going to use Bela for this project, you may want to look at ways of using it to apply some effects to the incoming sound ...

          giuliomoro ,

          Seth here and Hello...yes sir. I understand partially what you are saying here as I do not have a long standing relationship w/ music-tech.

          Wooden sounds, heh? Okay...that is a start. I feel like the Maker Faire, which was cancelled until recently, had some disconnect w/ reaching out.

          So, I am learning a lot in a short period to produce an effect from BELA from the violin.

          Seth

          P.S. And right, the sound(s) are not meant to process nothing. I expect the sound to be distorted in some way via BELA. BELA needs to merely exchange and process the data it receives to perform functions on the data to turn it into a different sound. Okay! I am w/ you in this context. How will it modify the sound? "How" in this question is where I am at now.

          giuliomoro 💯

          Hello...I am receiving a bunch of errors. My first error was that /libraries/Biquad/QuadBiquad.h does not exist.

          So, I found it and added it in the file system. I received so many errors that I gave up. Boo to me!

          Anyway, is there an updated image you all provide to handle the /QuadBiquad.h file?

          Seth

          P.S. If it matters, here are the errors:

          In file ./libraries/Biquad/QuadBiquad.h: expected '(' for function-style cast or type construction column: 34, line: 11
          In file ./libraries/Biquad/QuadBiquad.h: expected member name or ';' after declaration specifiers column: 35, line: 11
          In file ./libraries/Biquad/QuadBiquad.h: use of undeclared identifier 'BiquadCoeff' column: 21, line: 33
          In file ./libraries/Biquad/QuadBiquad.h: explicit instantiation of non-template class 'BiquadCoeffT' column: 23, line: 75
          use of undeclared identifier 'BiquadCoeff'; did you mean 'BiquadCoeffT'? column: 9, line: 15
          incomplete type 'BiquadCoeffT' named in nested name specifier column: 9, line: 15
          use of undeclared identifier 'BiquadCoeff'; did you mean 'BiquadCoeffT'? column: 34, line: 25
          incomplete type 'BiquadCoeffT' named in nested name specifier column: 34, line: 25
          use of undeclared identifier 'BiquadCoeff'; did you mean 'BiquadCoeffT'? column: 34, line: 29
          incomplete type 'BiquadCoeffT' named in nested name specifier column: 34, line: 29
          no member named 'filters' in 'QuadBiquad' column: 31, line: 40
          expected function body after function declarator column: 51, line: 72
          In file included from /root/Bela/projects/Making_Wood_Sounds/render.cpp:11:
          ./libraries/Biquad/QuadBiquad.h:11:16: error: use of undeclared identifier 'BiquadCoeffT'
              std::array<BiquadCoeffT<float>, 4> filters;
                         ^
          ./libraries/Biquad/QuadBiquad.h:11:34: error: expected '(' for function-style cast or type construction
              std::array<BiquadCoeffT<float>, 4> filters;
                                      ~~~~~^
          ./libraries/Biquad/QuadBiquad.h:11:35: error: expected member name or ';' after declaration specifiers
              std::array<BiquadCoeffT<float>, 4> filters;
                                            ^
          ./libraries/Biquad/QuadBiquad.h:33:21: error: use of undeclared identifier 'BiquadCoeff'
              int setup(const BiquadCoeff::Settings& settings);
                              ^
          ./libraries/Biquad/QuadBiquad.h:75:23: error: explicit instantiation of non-template class 'BiquadCoeffT'
          extern template class BiquadCoeffT<float>;
                                ^           ~~~~~~~
          /root/Bela/projects/Making_Wood_Sounds/render.cpp:15:9: error: use of undeclared identifier 'BiquadCoeff'; did you mean 'BiquadCoeffT'?
                  BiquadCoeff::Settings s = {
                  ^~~~~~~~~~~
                  BiquadCoeffT
          ./libraries/Biquad/QuadBiquad.h:75:23: note: 'BiquadCoeffT' declared here
          extern template class BiquadCoeffT<float>;
                                ^
          /root/Bela/projects/Making_Wood_Sounds/render.cpp:15:9: error: incomplete type 'BiquadCoeffT' named in nested name specifier
                  BiquadCoeff::Settings s = {
                  ^~~~~~~~~~~~~
          ./libraries/Biquad/QuadBiquad.h:75:23: note: forward declaration of 'BiquadCoeffT'
          extern template class BiquadCoeffT<float>;
                                ^
          /root/Bela/projects/Making_Wood_Sounds/render.cpp:25:34: error: use of undeclared identifier 'BiquadCoeff'; did you mean 'BiquadCoeffT'?
                                  s.type = BiquadCoeff::lowpass;
                                           ^~~~~~~~~~~
                                           BiquadCoeffT
          ./libraries/Biquad/QuadBiquad.h:75:23: note: 'BiquadCoeffT' declared here
          extern template class BiquadCoeffT<float>;
                                ^
          /root/Bela/projects/Making_Wood_Sounds/render.cpp:25:34: error: incomplete type 'BiquadCoeffT' named in nested name specifier
                                  s.type = BiquadCoeff::lowpass;
                                           ^~~~~~~~~~~~~
          ./libraries/Biquad/QuadBiquad.h:75:23: note: forward declaration of 'BiquadCoeffT'
          extern template class BiquadCoeffT<float>;
                                ^
          /root/Bela/projects/Making_Wood_Sounds/render.cpp:29:34: error: use of undeclared identifier 'BiquadCoeff'; did you mean 'BiquadCoeffT'?
                                  s.type = BiquadCoeff::highpass;
                                           ^~~~~~~~~~~
                                           BiquadCoeffT
          ./libraries/Biquad/QuadBiquad.h:75:23: note: 'BiquadCoeffT' declared here
          extern template class BiquadCoeffT<float>;
                                ^
          /root/Bela/projects/Making_Wood_Sounds/render.cpp:29:34: error: incomplete type 'BiquadCoeffT' named in nested name specifier
                                  s.type = BiquadCoeff::highpass;
                                           ^~~~~~~~~~~~~
          ./libraries/Biquad/QuadBiquad.h:75:23: note: forward declaration of 'BiquadCoeffT'
          extern template class BiquadCoeffT<float>;
                                ^
          /root/Bela/projects/Making_Wood_Sounds/render.cpp:40:31: error: no member named 'filters' in 'QuadBiquad'
                                  bs[b].filters[q].setup(s);
                                  ~~~~~ ^
          /root/Bela/projects/Making_Wood_Sounds/render.cpp:72:51: error: expected function body after function declarator
          void cleanup(BelaContext *context, void *userData)
                                                            ^
          13 errors generated.
          make: *** [/root/Bela/projects/Making_Wood_Sounds/build/render.o] Error 1

            silver2row Anyway, is there an updated image you all provide to handle the /QuadBiquad.h file?

            You should update your Bela code using the procedure here. That should fix most of the above.

              giuliomoro

              Hello,

              I got my 3D Printed violin to make sound from you and your projects resources via BELA and a small tweeter speaker. Anyway, I will be making a video and post it soon to Hackster.io for all of the people still interested in Music, BELA, and hardware along w/ the BBB.

              Thank you, sir. Now, I can try all sorts of things w/ it.

              Seth

              P.S. I will get the link to the video soon once the video uploads.

              Here is the mildly sound-a-rific violin being played on a tweeter for testing w/ the libraries you all have made.

              Seth

              Hi Seth,

              That video isn't playing here.

              Also do you have some pics of the violin. I have difficulty printing the simplest thing on my printer, the idea of a 3d printed violin is mad!

                video plays fine?
                violin looks sweet!

                sound may need some work, hah. 🙂
                good luck!

                  Hello Remork and AndyCap ,

                  I can view the video. It is a f-f-fiddle but in 3/4 size. The fellow that produced the files are all online when one searches for f-f-fiddle.

                  Also, yes. I need to work on the sound. The bow will not be rosined by me firstly. So, I should get a real violin player or a child that is willing to try at the Faire to rosin the bow so they may play.

                  Seth

                  P.S. Thank you! I will need it. I am no C++ expert as most of you can already tell, plus I am not a real violin student, and I love music (all kinds). Soothing to erratic and chaotic to melodic, all suits my needs of ear hole consumption!

                  AndyCap

                  Hello, I just reread what you typed. I kind of said already what to research on this effort but...

                  Here: https://openfabpdx.com/fffiddle/

                  That will bring you directly to the engineer who made it and other products he produces. Most of it is open source but some are a bit complicated, i.e. so he is trying to produce efforts outside of plain-Jane, Open Source.

                  Seth

                  Thanks for that link I will read through it...

                  All I get on the video here on safari on a mac is a play button that doesn't work!

                    video works fine on firefox.

                    AndyCap

                    Sir,

                    You are not missing much. I slowly pick the violin to make sounds instead of use the rosined bow.

                    Seth

                    P.S. But...things are coming along. I will post another one soon.