Re: [FFmpeg-devel] [PATCH]libavfilter/asrc_atone.c : generate algorithmic music
On Tue, Jun 30, 2020 at 8:40 PM Thilo Borgmann wrote: > Am 30.06.20 um 16:09 schrieb Ashutosh Pradhan: > > On Mon, Jun 29, 2020 at 6:53 PM Moritz Barsnick > wrote: > > > >> On Thu, Jun 25, 2020 at 21:15:06 +0530, Ashutosh Pradhan wrote: > >>> Generate algorithmic riff music. Changed to activate api. > >> > >> This commit doesn't change to activate API, as it introduces this > >> filter. So that sentence doesn't belong here. > >> > >>> - Real War KVAG muxer > >>> - > >>> +- atone filter > >> > >> Don't remove the empty line. > >> > >>>--enable-libfliteenable flite (voice synthesis) support via > >> libflite [no] > >>> + --enable-libfluidsynth enable libfluidsynth support for fluidsynth > >> [no] > >> > >> "for fluidsynth"?. Perhaps "for atone source". > >> > > Will change to above. > > > >> > >>> atempo_filter_select="rdft" > >>> +atone_filter_deps="libfluidsynth" > >> > >>> +@item sfont > >>> +Specify the location of soundfont file. Default value is > >>> +"/usr/share/sounds/sf2/FluidR3_GM.sf2"(for linux). > >> > >> For Linux - and elsewhere? > >> It will be the same path on all Unixes, but meaningless under Windows, > >> I guess. > >> > > Yes. > > Windows doesn't have the recommended Fluid_R3 General Midi SoundFont > file. > > So one has to enter the path every time. > > > >> > >>> +++ b/libavfilter/Makefile > >>> @@ -152,6 +152,7 @@ OBJS-$(CONFIG_FLITE_FILTER) += > >> asrc_flite.o > >>> OBJS-$(CONFIG_HILBERT_FILTER)+= asrc_hilbert.o > >>> OBJS-$(CONFIG_SINC_FILTER) += asrc_sinc.o > >>> OBJS-$(CONFIG_SINE_FILTER) += asrc_sine.o > >>> +OBJS-$(CONFIG_ATONE_FILTER) += asrc_atone.o > >> > >> I believe the audio sources are meant to be sorted alphabetically (by > >> CONFIG_*). > >> > >>> --- a/libavfilter/allfilters.c > >>> +++ b/libavfilter/allfilters.c > >>> @@ -146,6 +146,7 @@ extern AVFilter ff_asrc_flite; > >>> extern AVFilter ff_asrc_hilbert; > >>> extern AVFilter ff_asrc_sinc; > >>> extern AVFilter ff_asrc_sine; > >>> +extern AVFilter ff_asrc_atone; > >> > >> Same here. > >> > >>> +#include > >> > >>> +s->beat_dur = 6/s->beats_pm; > >>> +/*get change interval in frames/sec*/ > >>> +s->changerate = (4*s->beat_dur)*s->sample_rate/s->nb_samples; > >>> +if (s->changerate<1.0) > >>> +s->changerate = 1.0; > >> > >> Please leave single spaces around the operators such as '/', '*', '<'. > >> > >>> +s->numriffs = sizeof(riff)/(NPR* sizeof(int)); > >> > >> Same here. > >> > >>> +for (int i = 0; i < s->numriffs*NPR ; i++) > >> > >> And here. > >> > >>> +if (s->framecount == INT_MAX) > >>> + s->framecount = 0; > >> > >> Indentation. > >> > >>> +for (int i = 0; i < > >> sizeof(GM_instrument_list)/sizeof(GM_instrument_list[0]); i++) > >> > >> Use macro FF_ARRAY_ELEMS > >> > >>> +if (strcmp(GM_instrument_list[i], instrument) == 0) > >>> +return i; > >>> + > >>> +return 0; > >>> +} > >> > >> If this doesn't match any string, it returns 0. It also returns 0 if it > >> matches "Acoustic-Grand". Is that correct? (In find_percussion_track(), > >> you return i instead.) > >> > > I didn't want to output an error incase the instrument did not match. I > > forgot to update 0 with the number of the default instrument. I will > update > > that. > > For that case, you might want to output a warning that the instrument > could not be matched and the default instrument will be used instead. > I will change the code to implement this. > > >> > >>> +static void schedule_noteon(int chan, short key, unsigned int ticks, > >> int velocity, AtoneContext *s) > >>> +{ > >>> + fluid_event_t *ev = new_fluid_event(); > >> > >> Indentation. > >> > >>> +unsigned rand = av_lfg_get(>r)/2; > >> [...] > >>> +riff = rand%s->numriffs; > >> > >> Spaces around operators, please. > >> > >>> +if (3*i < numbars) > >>> +return (100 - (90*i)/numbars); > >>> +else if (3*i > 2*numbars) > >>> +return (40 + (90*i)/numbars); > >> > >> Same here. > >> > >>> +/*Determine the pattern, tempo (to paly as 8th, 16th or 32nd notes) > and > >> add the riffs to sequencer > >> > >> "play" > >> > >>> +Refernce: http://peterlangston.com/Papers/amc.pdf */ > >> > >> "Reference" > >> > >>> +AVFrame *frame; > >>> +int nb_samples; > >> ^^ two spaces, drop one. > >> > >>> +ret = ff_set_common_formats (ctx, formats); > >> ^ drop the space > >> > >>> +typedef struct > >>> +{ > >> > >> Bracket on the same line. > >> > >>> +Refernce: http://peterlangston.com/Papers/amc.pdf */ > >> > >> "Reference". > >> > > -Thilo > ___ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-devel] [PATCH]libavfilter/asrc_atone.c : generate algorithmic music
Am 30.06.20 um 16:09 schrieb Ashutosh Pradhan: > On Mon, Jun 29, 2020 at 6:53 PM Moritz Barsnick wrote: > >> On Thu, Jun 25, 2020 at 21:15:06 +0530, Ashutosh Pradhan wrote: >>> Generate algorithmic riff music. Changed to activate api. >> >> This commit doesn't change to activate API, as it introduces this >> filter. So that sentence doesn't belong here. >> >>> - Real War KVAG muxer >>> - >>> +- atone filter >> >> Don't remove the empty line. >> >>>--enable-libfliteenable flite (voice synthesis) support via >> libflite [no] >>> + --enable-libfluidsynth enable libfluidsynth support for fluidsynth >> [no] >> >> "for fluidsynth"?. Perhaps "for atone source". >> > Will change to above. > >> >>> atempo_filter_select="rdft" >>> +atone_filter_deps="libfluidsynth" >> >>> +@item sfont >>> +Specify the location of soundfont file. Default value is >>> +"/usr/share/sounds/sf2/FluidR3_GM.sf2"(for linux). >> >> For Linux - and elsewhere? >> It will be the same path on all Unixes, but meaningless under Windows, >> I guess. >> > Yes. > Windows doesn't have the recommended Fluid_R3 General Midi SoundFont file. > So one has to enter the path every time. > >> >>> +++ b/libavfilter/Makefile >>> @@ -152,6 +152,7 @@ OBJS-$(CONFIG_FLITE_FILTER) += >> asrc_flite.o >>> OBJS-$(CONFIG_HILBERT_FILTER)+= asrc_hilbert.o >>> OBJS-$(CONFIG_SINC_FILTER) += asrc_sinc.o >>> OBJS-$(CONFIG_SINE_FILTER) += asrc_sine.o >>> +OBJS-$(CONFIG_ATONE_FILTER) += asrc_atone.o >> >> I believe the audio sources are meant to be sorted alphabetically (by >> CONFIG_*). >> >>> --- a/libavfilter/allfilters.c >>> +++ b/libavfilter/allfilters.c >>> @@ -146,6 +146,7 @@ extern AVFilter ff_asrc_flite; >>> extern AVFilter ff_asrc_hilbert; >>> extern AVFilter ff_asrc_sinc; >>> extern AVFilter ff_asrc_sine; >>> +extern AVFilter ff_asrc_atone; >> >> Same here. >> >>> +#include >> >>> +s->beat_dur = 6/s->beats_pm; >>> +/*get change interval in frames/sec*/ >>> +s->changerate = (4*s->beat_dur)*s->sample_rate/s->nb_samples; >>> +if (s->changerate<1.0) >>> +s->changerate = 1.0; >> >> Please leave single spaces around the operators such as '/', '*', '<'. >> >>> +s->numriffs = sizeof(riff)/(NPR* sizeof(int)); >> >> Same here. >> >>> +for (int i = 0; i < s->numriffs*NPR ; i++) >> >> And here. >> >>> +if (s->framecount == INT_MAX) >>> + s->framecount = 0; >> >> Indentation. >> >>> +for (int i = 0; i < >> sizeof(GM_instrument_list)/sizeof(GM_instrument_list[0]); i++) >> >> Use macro FF_ARRAY_ELEMS >> >>> +if (strcmp(GM_instrument_list[i], instrument) == 0) >>> +return i; >>> + >>> +return 0; >>> +} >> >> If this doesn't match any string, it returns 0. It also returns 0 if it >> matches "Acoustic-Grand". Is that correct? (In find_percussion_track(), >> you return i instead.) >> > I didn't want to output an error incase the instrument did not match. I > forgot to update 0 with the number of the default instrument. I will update > that. For that case, you might want to output a warning that the instrument could not be matched and the default instrument will be used instead. >> >>> +static void schedule_noteon(int chan, short key, unsigned int ticks, >> int velocity, AtoneContext *s) >>> +{ >>> + fluid_event_t *ev = new_fluid_event(); >> >> Indentation. >> >>> +unsigned rand = av_lfg_get(>r)/2; >> [...] >>> +riff = rand%s->numriffs; >> >> Spaces around operators, please. >> >>> +if (3*i < numbars) >>> +return (100 - (90*i)/numbars); >>> +else if (3*i > 2*numbars) >>> +return (40 + (90*i)/numbars); >> >> Same here. >> >>> +/*Determine the pattern, tempo (to paly as 8th, 16th or 32nd notes) and >> add the riffs to sequencer >> >> "play" >> >>> +Refernce: http://peterlangston.com/Papers/amc.pdf */ >> >> "Reference" >> >>> +AVFrame *frame; >>> +int nb_samples; >> ^^ two spaces, drop one. >> >>> +ret = ff_set_common_formats (ctx, formats); >> ^ drop the space >> >>> +typedef struct >>> +{ >> >> Bracket on the same line. >> >>> +Refernce: http://peterlangston.com/Papers/amc.pdf */ >> >> "Reference". >> -Thilo ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-devel] [PATCH]libavfilter/asrc_atone.c : generate algorithmic music
Ashutosh Pradhan (12020-06-30): > Yes. > Windows doesn't have the recommended Fluid_R3 General Midi SoundFont file. > So one has to enter the path every time. Neither doses Linux. It may be installed on the system, but not necessarily at this path. A better solution needs to be found. The library probably has a mechanism for a default path. Regards, -- Nicolas George signature.asc Description: PGP signature ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-devel] [PATCH]libavfilter/asrc_atone.c : generate algorithmic music
On Mon, Jun 29, 2020 at 6:53 PM Moritz Barsnick wrote: > On Thu, Jun 25, 2020 at 21:15:06 +0530, Ashutosh Pradhan wrote: > > Generate algorithmic riff music. Changed to activate api. > > This commit doesn't change to activate API, as it introduces this > filter. So that sentence doesn't belong here. > > > - Real War KVAG muxer > > - > > +- atone filter > > Don't remove the empty line. > > >--enable-libfliteenable flite (voice synthesis) support via > libflite [no] > > + --enable-libfluidsynth enable libfluidsynth support for fluidsynth > [no] > > "for fluidsynth"?. Perhaps "for atone source". > Will change to above. > > > atempo_filter_select="rdft" > > +atone_filter_deps="libfluidsynth" > > > +@item sfont > > +Specify the location of soundfont file. Default value is > > +"/usr/share/sounds/sf2/FluidR3_GM.sf2"(for linux). > > For Linux - and elsewhere? > It will be the same path on all Unixes, but meaningless under Windows, > I guess. > Yes. Windows doesn't have the recommended Fluid_R3 General Midi SoundFont file. So one has to enter the path every time. > > > +++ b/libavfilter/Makefile > > @@ -152,6 +152,7 @@ OBJS-$(CONFIG_FLITE_FILTER) += > asrc_flite.o > > OBJS-$(CONFIG_HILBERT_FILTER)+= asrc_hilbert.o > > OBJS-$(CONFIG_SINC_FILTER) += asrc_sinc.o > > OBJS-$(CONFIG_SINE_FILTER) += asrc_sine.o > > +OBJS-$(CONFIG_ATONE_FILTER) += asrc_atone.o > > I believe the audio sources are meant to be sorted alphabetically (by > CONFIG_*). > > > --- a/libavfilter/allfilters.c > > +++ b/libavfilter/allfilters.c > > @@ -146,6 +146,7 @@ extern AVFilter ff_asrc_flite; > > extern AVFilter ff_asrc_hilbert; > > extern AVFilter ff_asrc_sinc; > > extern AVFilter ff_asrc_sine; > > +extern AVFilter ff_asrc_atone; > > Same here. > > > +#include > > > +s->beat_dur = 6/s->beats_pm; > > +/*get change interval in frames/sec*/ > > +s->changerate = (4*s->beat_dur)*s->sample_rate/s->nb_samples; > > +if (s->changerate<1.0) > > +s->changerate = 1.0; > > Please leave single spaces around the operators such as '/', '*', '<'. > > > +s->numriffs = sizeof(riff)/(NPR* sizeof(int)); > > Same here. > > > +for (int i = 0; i < s->numriffs*NPR ; i++) > > And here. > > > +if (s->framecount == INT_MAX) > > + s->framecount = 0; > > Indentation. > > > +for (int i = 0; i < > sizeof(GM_instrument_list)/sizeof(GM_instrument_list[0]); i++) > > Use macro FF_ARRAY_ELEMS > > > +if (strcmp(GM_instrument_list[i], instrument) == 0) > > +return i; > > + > > +return 0; > > +} > > If this doesn't match any string, it returns 0. It also returns 0 if it > matches "Acoustic-Grand". Is that correct? (In find_percussion_track(), > you return i instead.) > I didn't want to output an error incase the instrument did not match. I forgot to update 0 with the number of the default instrument. I will update that. > > > +static void schedule_noteon(int chan, short key, unsigned int ticks, > int velocity, AtoneContext *s) > > +{ > > + fluid_event_t *ev = new_fluid_event(); > > Indentation. > > > +unsigned rand = av_lfg_get(>r)/2; > [...] > > +riff = rand%s->numriffs; > > Spaces around operators, please. > > > +if (3*i < numbars) > > +return (100 - (90*i)/numbars); > > +else if (3*i > 2*numbars) > > +return (40 + (90*i)/numbars); > > Same here. > > > +/*Determine the pattern, tempo (to paly as 8th, 16th or 32nd notes) and > add the riffs to sequencer > > "play" > > > +Refernce: http://peterlangston.com/Papers/amc.pdf */ > > "Reference" > > > +AVFrame *frame; > > +int nb_samples; > ^^ two spaces, drop one. > > > +ret = ff_set_common_formats (ctx, formats); > ^ drop the space > > > +typedef struct > > +{ > > Bracket on the same line. > > > +Refernce: http://peterlangston.com/Papers/amc.pdf */ > > "Reference". > > > Regards, > Moritz > ___ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".
Re: [FFmpeg-devel] [PATCH]libavfilter/asrc_atone.c : generate algorithmic music
On Thu, Jun 25, 2020 at 21:15:06 +0530, Ashutosh Pradhan wrote: > Generate algorithmic riff music. Changed to activate api. This commit doesn't change to activate API, as it introduces this filter. So that sentence doesn't belong here. > - Real War KVAG muxer > - > +- atone filter Don't remove the empty line. >--enable-libfliteenable flite (voice synthesis) support via > libflite [no] > + --enable-libfluidsynth enable libfluidsynth support for fluidsynth [no] "for fluidsynth"?. Perhaps "for atone source". > atempo_filter_select="rdft" > +atone_filter_deps="libfluidsynth" > +@item sfont > +Specify the location of soundfont file. Default value is > +"/usr/share/sounds/sf2/FluidR3_GM.sf2"(for linux). For Linux - and elsewhere? It will be the same path on all Unixes, but meaningless under Windows, I guess. > +++ b/libavfilter/Makefile > @@ -152,6 +152,7 @@ OBJS-$(CONFIG_FLITE_FILTER) += > asrc_flite.o > OBJS-$(CONFIG_HILBERT_FILTER)+= asrc_hilbert.o > OBJS-$(CONFIG_SINC_FILTER) += asrc_sinc.o > OBJS-$(CONFIG_SINE_FILTER) += asrc_sine.o > +OBJS-$(CONFIG_ATONE_FILTER) += asrc_atone.o I believe the audio sources are meant to be sorted alphabetically (by CONFIG_*). > --- a/libavfilter/allfilters.c > +++ b/libavfilter/allfilters.c > @@ -146,6 +146,7 @@ extern AVFilter ff_asrc_flite; > extern AVFilter ff_asrc_hilbert; > extern AVFilter ff_asrc_sinc; > extern AVFilter ff_asrc_sine; > +extern AVFilter ff_asrc_atone; Same here. > +#include > +s->beat_dur = 6/s->beats_pm; > +/*get change interval in frames/sec*/ > +s->changerate = (4*s->beat_dur)*s->sample_rate/s->nb_samples; > +if (s->changerate<1.0) > +s->changerate = 1.0; Please leave single spaces around the operators such as '/', '*', '<'. > +s->numriffs = sizeof(riff)/(NPR* sizeof(int)); Same here. > +for (int i = 0; i < s->numriffs*NPR ; i++) And here. > +if (s->framecount == INT_MAX) > + s->framecount = 0; Indentation. > +for (int i = 0; i < > sizeof(GM_instrument_list)/sizeof(GM_instrument_list[0]); i++) Use macro FF_ARRAY_ELEMS > +if (strcmp(GM_instrument_list[i], instrument) == 0) > +return i; > + > +return 0; > +} If this doesn't match any string, it returns 0. It also returns 0 if it matches "Acoustic-Grand". Is that correct? (In find_percussion_track(), you return i instead.) > +static void schedule_noteon(int chan, short key, unsigned int ticks, int > velocity, AtoneContext *s) > +{ > + fluid_event_t *ev = new_fluid_event(); Indentation. > +unsigned rand = av_lfg_get(>r)/2; [...] > +riff = rand%s->numriffs; Spaces around operators, please. > +if (3*i < numbars) > +return (100 - (90*i)/numbars); > +else if (3*i > 2*numbars) > +return (40 + (90*i)/numbars); Same here. > +/*Determine the pattern, tempo (to paly as 8th, 16th or 32nd notes) and add > the riffs to sequencer "play" > +Refernce: http://peterlangston.com/Papers/amc.pdf */ "Reference" > +AVFrame *frame; > +int nb_samples; ^^ two spaces, drop one. > +ret = ff_set_common_formats (ctx, formats); ^ drop the space > +typedef struct > +{ Bracket on the same line. > +Refernce: http://peterlangston.com/Papers/amc.pdf */ "Reference". Regards, Moritz ___ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".